我在我的應用程序中使用異步任務。我正在預執行和doInBackground啓動一個進度對話框我調用一個函數,將從geocoder返回當前位置。如果當前位置不是可用我顯示一個對話框手動輸入的地方。但它變得崩潰時,對話框來了。我甚至不能在該功能使用結果強制close.Can任何1有這個解決方案問題..? 請幫助.. 這是我得到的錯誤..問題使用異步任務
01-03 09:45:36.216: E/AndroidRuntime(452): FATAL EXCEPTION: AsyncTask #1
01-03 09:45:36.216: E/AndroidRuntime(452): java.lang.RuntimeException: An error occured while executing doInBackground()
01-03 09:45:36.216: E/AndroidRuntime(452): at android.os.AsyncTask$3.done(AsyncTask.java:200)
01-03 09:45:36.216: E/AndroidRuntime(452): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
01-03 09:45:36.216: E/AndroidRuntime(452): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
01-03 09:45:36.216: E/AndroidRuntime(452): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
01-03 09:45:36.216: E/AndroidRuntime(452): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-03 09:45:36.216: E/AndroidRuntime(452): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-03 09:45:36.216: E/AndroidRuntime(452): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-03 09:45:36.216: E/AndroidRuntime(452): at java.lang.Thread.run(Thread.java:1019)
01-03 09:45:36.216: E/AndroidRuntime(452): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
01-03 09:45:36.216: E/AndroidRuntime(452): at android.os.Handler.<init>(Handler.java:121)
01-03 09:45:36.216: E/AndroidRuntime(452): at android.widget.Toast.<init>(Toast.java:68)
01-03 09:45:36.216: E/AndroidRuntime(452): at android.widget.Toast.makeText(Toast.java:231)
我的異步任務是這樣的。
private class UpdateCity extends AsyncTask<String, Void, Void> {
ProgressDialog dialog = new ProgressDialog(this);
@Override
protected void onPreExecute() {
this.dialog.setMessage("Please wait for few seconds...");
this.dialog.setTitle("");
this.dialog.show();
}
@Override
protected Void doInBackground(final String... args) {
checkCity(Cplacename);//my function
return null;
}
@Override
protected void onPostExecute(final Void unused) {
this.dialog.dismiss();
}
}
您沒有給我們任何代碼,也沒有logcat的堆棧跟蹤...我們如何幫助您? – 2012-01-03 04:10:59
你可以添加你的異步任務代碼嗎?我猜你需要在線程啓動之前調用Looper.prepare。正如錯誤中指定的那樣。 – nala4ever 2012-01-03 04:22:13
我想知道如何處理在doInBackground中執行的函數的異常。例如:敬酒 – yshak 2012-01-03 04:24:46