我已经创建了一个异步任务是这样的:异步任务
private class LongOperationcheckall extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
String result="Start";
try
{
Looper.myLooper().prepare();
// Looper.loop();
// TODO Auto-generated method stub
for(int k=0;k<13;k++)
{
checkall();
this.publishProgress("Show the dialog");
//count++;
}
result="Success";
checkallcomp++;
OnscanComplete();
}
catch(Exception ex)
{
checkallcomp++;
OnscanComplete();
}
return result;
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
Log.i("Progress", "Progressincheck");
}
protected void onPostExecute(String params) {
Log.w("all Check",params);
// Execution of result of Long time consuming operation
}
}
我加入的代码,
Looper.myLooper().prepare();
调用这个任务,因为
taskAllcheck = new LongOperationcheckall();
taskAllcheck.execute();
第四次时,我第四次点击开始按钮,它给出了例外
无法创建内部线程的线程这不叫looper.prepare只有
,当我在设备运行执行模拟器OK内部处理,但之后添加此行,在错误出现因为当我第四次单击开始按钮时,每个线程只能创建一个活套,并致电taskAllcheck.execute();
。
checkall()方法做什么? “无法创建处理程序...”异常通常发生在您尝试执行只允许在后台线程中执行的操作时发生。 – Egor
checkall()只检查设置如开启或关闭蓝牙,gps在设备上或关闭,并根据它在数据库中更新状态 –
这就是我所说的。也许,这些是必须在UI线程上执行的操作。你可以将它们放到activity.runOnUIThread()方法的Runnable中,这样你就可以克服Looper异常。 – Egor