不同的广播接收器取决于活动生活

时间:2013-09-03 13:17:35

标签: android localbroadcastmanager

前段时间,我能够拥有2个广播接收器,一个在我的清单中声明,另一个在我的活动中声明。 就像这里:What is the best way to handle callback from IntentService

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

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

1 个答案:

答案 0 :(得分: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只发送非敏感数据。这是我现在得到的最佳解决方案。