以下是今天晚上学习的BroadcsatReceiver的有序广播的Demo
首先讲解一下:有序广播:orderBroadcast既然是有序的就涉及到几个广播接收器的先后顺序,我们Demo中创建两个Receiver的实例
首先在第一个广播接收器下我们声明接收器的优先权:android:priority:100以此来保证此接收器的第一接受优先权;第一个实例 如下:
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "在MyBroadcastReceicer中收到广播", Toast.LENGTH_SHORT).show(); //abortBroadcast方法是截断该广播接收器的接受,在注册清单文件中我们注册了次接收器的优先权 // 所以在此之后的广播接收器已经不能接受到发出的广播了 abortBroadcast(); } }
下面是Andorramainfest.xml的关键代码来注册该接收器
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
android:priority="100">
android:name="com.example.shanshui.networkreceiver.MY_BROADCAST"/>
在这之后我们在此Demo中添加一个Button来承载广播的发送,具体代码如下
:
Button btn= (Button) findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent("com.example.shanshui.networkreceiver.MY_BROADCAST"); //修改为有序广播只用这一行代码: sendOrderedBroadcast(intent,null); // sendBroadcast(intent); } });
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下是第二个广播接收器的Demo
package com.example.shanshui.braodcastbemo2; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class AnotherBroadcstReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving // an Intent broadcast. Toast.makeText(context, "在AnotherBroadCast中接收到广播啦!", Toast.LENGTH_SHORT).show(); } }
同样的步骤也是需要给接收器在Androidmainfest.xml注册接收属性
android:name=".AnotherBroadcstReceiver"
android:enabled="true"
android:exported="true">
android:name="com.example.shanshui.networkreceiver.MY_BROADCAST"/>
这样启动两个活动后,,由于第一个广播接收器设置了order的优先级别,且调用了abortBroadcast()方法,因此在这之后的receiver就被截断了
总结:Anddroid的广播机制很强大,也是安卓开发中的要点,在这节内容中我们接触到了权限;permission的概念:涉及到用户隐私与权限的时候,必须声明权限:否则程序启动就会报错!