0

前段时间,我能够拥有 2 个广播接收器,一个在我的清单中声明,另一个在我的活动中声明。喜欢这里:处理来自 IntentService 的回调的最佳方法是什么

但是,由于我已更改为 LocalBroadcastReceiver,并使用 sendBroadcast 方法更改了 sendOrderedBroadcast,因此只有在活动中注册的那个只是接收广播。我读过localbroadcastreceiver 无法在清单中注册。

那么如何唤醒未在活动中注册的广播接收器?

4

1 回答 1

0

我找到了自己的答案,所以我给那些有兴趣的人回复。

我有两个 BroadcastReceiver 类,一个在应用程序唤醒时使用,具有:

ActivityBroadcastReceiver myReceiver = new ActivityBroadcastReceiver();

@Override
protected void onResume() {     
    LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver, new IntentFilter("com.mybroadcast"));
    super.onResume();
}

@Override
protected void onPause() {      
    LocalBroadcastManager.getInstance(this).unregisterReceiver(myReceiver);
    super.onPause();
}

在我的清单文件中:

<receiver
        android:name="com.broadcastreceiver.NotificationBroadcastReceiver"
        android:enabled="true" >
        <intent-filter>
            <action android:name="com.mybroadcast" />
        </intent-filter>
    </receiver>

发送我的广播:

if(!LocalBroadcastManager.getInstance(context).sendBroadcast(broadcast))
            context.sendBroadcast(broadcast);               

我同意这样, context.sendBroadcast() ,每个人都可以收到我的广播,但在我的代码中,sendBroadcast 只发送不敏感的数据。这是我目前得到的最好的解决方案。

于 2013-09-04T08:18:11.737 回答