1

我正在使用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): 发送 Intent { act=... } 的广播结果失败 W/ActivityManager(12067): android.os.DeadObjectException W/ActivityManager(12067): 在 android.os.BinderProxy.transact(Native Method ) W/ActivityManager(12067):在 android.content.IIntentReceiver$Stub$Proxy.performReceive(IIntentReceiver.java:121) W/ActivityManager(12067):在 com.android.server.am.ActivityManagerService.performReceive(ActivityManagerService.java :12912) W/ActivityManager(12067):在 com.android.server.am.ActivityManagerService.processNextBroadcast(ActivityManagerService.java:13133)W/ActivityManager(12067):在 com.android.server.am.ActivityManagerService.finishReceiver(ActivityManagerService .java:12766) W/ActivityManager(12067): 在 android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:287) W/ActivityManager(12067): 在 com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1755) W/ActivityManager(12067): 在 android.os.Binder.execTransact(Binder.java:301) W/ActivityManager(12067):在 dalvik.system.NativeStart.run(Native Method)

到目前为止,我只在 Android 2.1 版的摩托罗拉 Defy 手机上遇到过这种情况,但它也可能发生在其他人身上。

我在互联网上找不到任何参考,有谁知道为什么会发生这种情况?谢谢!

4

1 回答 1

2

如果调用的组件sendOrderedBroadcast()在广播绕回提供的BroadcastReceiver匿名子类实例之前被销毁,我可以看到这种情况发生。

于 2012-10-17T14:27:25.020 回答