OrderedBroadcast
有序广播可以设置最后的接收者finalReceiver
public class MyReceiver1 extends BroadcastReceiver { private static final String TAG = "CM-MyReceiver1"; @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, intent.getStringExtra("msg")); // 创建一个Bundle对象,并存入数据 Bundle bundle = new Bundle(); bundle.putString("first", "第一个BroadcastReceiver存入的消息"); // 将bundle放入结果中 setResultExtras(bundle); // 取消Broadcast的继续传播 // abortBroadcast(); } }
public class MyReceiver2 extends BroadcastReceiver { private static final String TAG = "CM-MyReceiver2"; @Override public void onReceive(Context context, Intent intent) { Bundle bundle = getResultExtras(true); // 解析前一个BroadcastReceiver所存入的key为first的消息 String first = bundle.getString("first"); Log.d(TAG, first); } }
public class SortedBroadcast extends Activity { Button send; private class FinalReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.d("CM-FinalReceiver", "get it"); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取程序中的send按钮 send = (Button) findViewById(R.id.send); send.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 创建Intent对象 Intent intent = new Intent(); intent.setAction("org.crazyit.action.CRAZY_BROADCAST"); intent.putExtra("msg", "简单的消息"); // 发送有序广播 FinalReceiver finalReceiver = new FinalReceiver(); sendOrderedBroadcast(intent, null, finalReceiver, null, 0, null, null); } }); } }
<receiver android:name=".MyReceiver1">
<intent-filter android:priority="20">
<action android:name="org.crazyit.action.CRAZY_BROADCAST" />
</intent-filter>
</receiver>
<receiver android:name=".MyReceiver2">
<intent-filter android:priority="0">
<action android:name="org.crazyit.action.CRAZY_BROADCAST" />
</intent-filter>
</receiver>
04-07 21:48:42.366 8014 8014 D CM-MyReceiver1: 简单的消息
04-07 21:48:42.376 8014 8014 D CM-MyReceiver2: 第一个BroadcastReceiver存入的消息
04-07 21:48:42.376 8014 8014 D CM-FinalReceiver: get it

浙公网安备 33010602011771号