sun*_*nil 1 android exception broadcastreceiver android-asynctask
我已在我的应用程序中实现了推送通知.收到推送消息后,我在AsyncTask的帮助下调用web服务.这在使用应用程序或在内存中时工作正常.但是,如果我从设置中停止应用程序,然后如果将消息推送到设备,则会出现异常,例如"在死线程上向处理程序发送消息".这可能是因为应用程序不在线.
有人能让我知道它是否可以从推送通知接收器中实际删除AsyncTask并只处理消息?
关心Sunil
Jon*_*low 10
这是由于Android框架中的AsyncTask中存在错误.AsyncTask.java具有以下代码:
private static final InternalHandler sHandler = new InternalHandler();
Run Code Online (Sandbox Code Playgroud)
它期望在主线程上初始化它,但是这不能保证,因为它将在导致类运行其静态初始化器的任何线程上初始化.我重现了Handler引用工作线程的问题.
导致这种情况发生的常见模式是使用IntentService类.C2DM示例代码执行此操作.
一个简单的解决方法是将以下代码添加到应用程序的onCreate方法:
Class.forName("android.os.AsyncTask");
Run Code Online (Sandbox Code Playgroud)
这将强制在主线程中初始化AsyncTask.我在android bug数据库中提交了一个bug.请参阅http://code.google.com/p/android/issues/detail?id=20915.
| 归档时间: |
|
| 查看次数: |
3204 次 |
| 最近记录: |