我正在使用Context.sendOrderedBroadcast方法发送广播并检查是否有人在到达resultReceiver之前收到了广播。
以下是代码段:
context.sendOrderedBroadcast(intent, null, new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Do something if this broadcast was not handled by others.
}, null, Activity.RESULT_OK, null, null);
这通常没有问题但是我不时会收到以下错误并且我的BroadcastReceiver没有被调用:
W / ActivityManager(12067):发送广播结果失败 意图{act = ...} W / ActivityManager(12067):android.os.DeadObjectException W / ActivityManager(12067):at android.os.BinderProxy.transact(原生方法) W / ActivityManager(12067):at android.content.IIntentReceiver $存根$ Proxy.performReceive(IIntentReceiver.java:121) W / ActivityManager(12067):at com.android.server.am.ActivityManagerService.performReceive(ActivityManagerService.java:12912) W / ActivityManager(12067):at com.android.server.am.ActivityManagerService.processNextBroadcast(ActivityManagerService.java:13133)W / ActivityManager(12067):at com.android.server.am.ActivityManagerService.finishReceiver(ActivityManagerService.java:12766) W / ActivityManager(12067):at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:287) W / ActivityManager(12067):at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1755) W / ActivityManager(12067):at android.os.Binder.execTransact(Binder.java:301) W / ActivityManager(12067):at dalvik.system.NativeStart.run(原生方法)
到目前为止,我只在Android版本2.1的摩托罗拉Defy手机上遇到过它,但也可能在其他人身上遇到过。
我在互联网上找不到任何引用,有谁知道为什么会这样? 谢谢!
答案 0 :(得分:2)
如果调用sendOrderedBroadcast()
的组件在广播回绕到BroadcastReceiver
匿名子类的提供实例之前被销毁,我可以看到这种情况发生。