首先,先展示一下运行效果:
点击按钮“发送有序广播” 或按照之前代码中设置的优先级,先后打印日志。
首先,我们要创建三个MyBroadReceiver,在里面写一些,自己想要输出的语句。
public class MyBroadReceiverOne extends BroadcastReceiver {
public MyBroadReceiverOne() {
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
// an Intent broadcast.
Log.d("MyBroadReceiverOne","自定义ONE");
}
}
接下来的两个,与第一个类似。
创建广播接收器后,我们还要配置一下他们:
<receiver
android:name=".MyBroadReceiverOne"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="1000">
<action android:name="Intercept_Stitch"/>
</intent-filter>
</receiver>
<receiver
android:name=".MyBroadReceiverTwo"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="200">
<action android:name="Intercept_Stitch"/>
</intent-filter>
</receiver>
<receiver
android:name=".MyBroadReceiverThree"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="600">
<action android:name="Intercept_Stitch"/>
</intent-filter>
</receiver>
接下来是MainActivity中的代码。
public class Exe extends AppCompatActivity {
private Button bt_send;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exe);
bt_send = (Button) findViewById(R.id.button);
bt_send.setOnClickListener(new send());
}
private class send implements View.OnClickListener {
@Override
public void onClick(View v) {
Intent intent = new Intent("Intercept_Stitch");
sendOrderedBroadcast(intent,null);
}
}
}
发送广播的顺序,和配置文件的priority属性有过,当priority的值越大时,优先级就越高,也就优先输出。当然如果两个接收器优先级一样大的话,那么就按照它们在XML文件中的先后顺序来确定它们的输出顺序。