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.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...