我已经收到来自用户的大量错误报告,这些错误报告来自强制关闭对话框,内容如下: 通用标签

现在,我一直在尝试找出如何最好地解决此问题。在我的onPerformSync实现内部,我创建了许多AsyncTasks并执行它们。我怀疑我的问题是在从onPerformSync返回之前,我没有等待这些任务完成。我尝试执行以下操作: 通用标签

然后我设置了一个计数器,当该计数器递减为零时,从异步任务的回调内部调用Looper.myLooper()。quit()。

但是这样做会导致我的应用程序崩溃,并出现以下运行时错误: 通用标签

有什么想法可以正确完成我的同步吗?

有帮助吗?

解决方案

我知道这篇文章很旧,但是对于遇到此线程的其他人,只在主线程上不调用looper.quit()怎么办?以下内容是从SyncAdpater服务生成多个AsyncTask的情况下为我工作的,尽管在性能方面可能还有其他原因不这样做... 通用标签

其他提示

实际上你不能。AsyncTask使用主UI线程,并依赖于Handler和Looper那里不可用。使用纯线程实现,只应在活动中使用AsyncTask。

abloc的响应解决了该问题,但是此解决方案的问题是UI冻结,Android 2.2和Android 2.3中存在此问题。我发现的技巧是在我的类SyncAdapter中调用AsyncTask的构造函数,并使用Looper.prepare() 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top