OnCreate中的AsyncTask在运行时失败,如何在Android中避免这种情况?

时间:2009-10-12 14:41:53

标签: android android-activity asynchronous

我有一个以AsyncTask开头的活动来检查与我的服务器api的连接。 因为这不应该在UI线程中运行,所以我为此做了一个AsyncTask。

问题是当我启动Asynctask的后台进程时会遇到运行时异常。

我该如何避免这种情况?

来自日志:

10-12 14:18:56.476: ERROR/AndroidRuntime(1523): java.lang.RuntimeException: An error occured while executing doInBackground()
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:234)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:258)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.FutureTask.run(FutureTask.java:122)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:673)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at java.lang.Thread.run(Thread.java:1058)
10-12 14:18:56.476: ERROR/AndroidRuntime(1523): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
10-12 14:18:56.476: ERROR/AndroidRuntime(1523):     at android.os.Handler.<init>(Handler.java:121)

2 个答案:

答案 0 :(得分:2)

您是否在UI线程以外的线程中创建AsyncTask?这几乎无法调试,无需查看您正在使用的代码。

答案 1 :(得分:0)

从上面的例外情况来看,我猜你做了一些依赖于doInBackground中的Handler的东西,假设它是在单独的线程中运行的。请发布您的该功能的代码。