微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android-我的AsyncTasks都没有获取到onPostExecute的回调

当我重新安装应用程序时,我的AyncTasks似乎都没有工作.不管是什么,它们都会失败,并显示消息“将消息发送到死线程”.
他们从事各种活动,从事各种不同的工作,但都失败了.

如果我在DDMS的线程查看器中查看线程,则所有5个左右的AsynchTask线程似乎都处于空闲状态并正在等待工作.

如果我强行关闭该应用程序,然后重新启动它,它们都将开始工作.

它们都是从UI线程开始的.

有任何想法吗?

解决方法:

这是由于Android框架中AsyncTask中的错误所致. AsyncTask.java具有以下代码

private static final InternalHandler sHandler = new InternalHandler();

它期望在主线程上进行初始化,但这不能保证,因为它将在导致类运行其静态初始化程序的任何线程上进行初始化.在您的情况下,您可能导致它在您创建的工作线程上初始化.

一个简单的解决方法是将以下代码添加到应用程序的onCreate方法中:

Class.forName("android.os.AsyncTask");

这将强制AsyncTask在主线程中初始化.我在android bug数据库中对此提交了一个bug.参见http://code.google.com/p/android/issues/detail?id=20915.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐