0
我正在從Android應用程序連接到Java中的RESTful Web服務。我正在使用AsyncTask來獲取數據。它適用於正常數據量。但是當我有大量數據時,Android應用程序會發生異常。我試圖抓住這一例外,但我不能。由於大量數據導致AsyncTask異常
private class LoadingDataFromServer extends AsyncTask<Void, Void, Void> {
private boolean outOfMemory = false;
@Override
public void onPreExecute() {
progress = ProgressDialog.show(main_activity, null,"Loading ...", true);
}
@Override
protected void onPostExecute(Void result) {
if(outOfMemory) {
Toast.makeText(StatisticActivity.this, "Out of memory, select smaller criteria", Toast.LENGTH_SHORT).show();
finish();
}
else
setListView();
try {
progress.dismiss();
} catch (Exception e) { }
}
@Override
protected Void doInBackground(Void... params) {
TextView txtProject = (TextView) main_activity.findViewById(R.id.project);
txtProject.setBackgroundColor(Color.DKGRAY);
txtProject.setText(project);
TextView label = (TextView) main_activity.findViewById(R.id.label);
label.setText(R.string.deliverable);
try {
loadStatistic();
} catch (OutOfMemoryError e) {
outOfMemory = true;
progress.dismiss();
} catch (RuntimeException e) {
outOfMemory = true;
progress.dismiss();
} catch (Exception e) {
outOfMemory = true;
progress.dismiss();
}
return null;
}
}
這是我得到的錯誤:
10-14 22:24:10.952: ERROR/AndroidRuntime(4179): Uncaught handler: thread AsyncTask #3 exiting due to uncaught exception
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): java.lang.RuntimeException: An error occured while executing doInBackground()
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at android.os.AsyncTask$3.done(AsyncTask.java:200)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at java.lang.Thread.run(Thread.java:1102)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at android.os.Handler.<init>(Handler.java:121)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at android.widget.Toast.<init>(Toast.java:68)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at android.widget.Toast.makeText(Toast.java:231)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at se.softwerk.timelog.statistic.StatisticActivity$LoadingDataFromServer.doInBackground(StatisticActivity.java:301)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at se.softwerk.timelog.statistic.StatisticActivity$LoadingDataFromServer.doInBackground(StatisticActivity.java:1)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at android.os.AsyncTask$2.call(AsyncTask.java:185)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-14 22:24:10.962: ERROR/AndroidRuntime(4179): ... 4 more
異常在doInBackground
發生的事情,但我的例外HANDELING沒有工作。你可以幫我嗎?
聲音像異常告訴你到底發生了什麼錯誤:'由於:java.lang.RuntimeException:無法在未調用Looper.prepare()的線程中創建處理程序' –