我已經創建了一個異步任務是這樣的:異步任務
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