1 首先根據廣播應用內接收和應用外接收,分兩個類進行管理
[1] LocalBroadcastManager,應用內廣播管理類
[2] BroadcastManager 廣播管理類(部分應用內,應用外)
2 廣播接收類實現的兩種方式
[1] 代碼生成類,並註冊
public class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
//代碼註冊廣播接收類
public void registerMessageReceiver() {
mMessageReceiver = new MessageReceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(MESSAGE_RECEIVED_ACTION);
registerReceiver(mMessageReceiver, filter);
}
[2] 在AndroidManifest.xml 文件中配置廣播接收類
<receiver
android:name="com.example.jpushdemo.MyReceiver"
android:enabled="true">
<intent-filter>
<action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required 用
戶註冊SDK的intent-->
<action android:name="cn.jpush.android.intent.UNREGISTRATION" />
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required
用戶接收SDK消息的intent-->
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--
Required 用戶接收SDK通知欄信息的intent-->
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--
Required 用戶打開自定義通知欄的intent-->
<action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" />
<!--Optional 用戶接受Rich Push Javascript 回調函數的intent-->
<category android:name="com.example.jpushtest" />
</intent-filter>
</receiver>
3 消息發送的兩種方式
Normal broadcast,經過Context.sendBroadcast 發送,接口器不按照順序,異步處理
Ordered broadcasts ,經過Context.sendOrderedBroadcast發送,因爲每一個接收器依次執行時,它能夠
傳播的結果到下一個接收器,或者它能夠徹底停止該廣播,以便它不會被傳遞給其餘接收者。排列順序爲接
收器的優先級android