发送有序广播
2015-09-18 14:50
393 查看
发送有序广播代码
可以看到,发送有序广播只需要改动一行代码,即将sendBroadcast()方法改成sendOrderedBroadcast()方法。sendOrderedBroadcast()方法接收两个参数,第一个参数仍然是Intent,第二个参数是一个与权限相关的字符串,这里传入null就行了。
那么该如何设定广播接收器的先后顺序呢?当然是在注册的时候进行设定的了,修改AndroidManifest.xml中的代码,如下所示:
我们通过android:priority属性给广播接收器设置了优先级,优先级比较高的广播接收器就可以先收到广播。这里将MyBroadcastReceiver的优先级设成了100,以保证它一定会在AnotherBroadcastReceiver之前收到广播。
如果在onReceive()方法中调用了abortBroadcast()方法,就表示将这条广播截断,后面的广播接收器将无法再接收到这条广播。
public class MainActivity extends Activity { …… @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent("com.example.broadcasttest. MY_BROADCAST"); sendOrderedBroadcast(intent, null); } }); …… } …… }
可以看到,发送有序广播只需要改动一行代码,即将sendBroadcast()方法改成sendOrderedBroadcast()方法。sendOrderedBroadcast()方法接收两个参数,第一个参数仍然是Intent,第二个参数是一个与权限相关的字符串,这里传入null就行了。
那么该如何设定广播接收器的先后顺序呢?当然是在注册的时候进行设定的了,修改AndroidManifest.xml中的代码,如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.broadcasttest" android:versionCode="1" android:versionName="1.0" > …… <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > …… <receiver android:name=".MyBroadcastReceiver"> <intent-filter android:priority="100" > <action android:name="com.example.broadcasttest.MY_BROADCAST"/> </intent-filter> </receiver> </application> </manifest>
我们通过android:priority属性给广播接收器设置了优先级,优先级比较高的广播接收器就可以先收到广播。这里将MyBroadcastReceiver的优先级设成了100,以保证它一定会在AnotherBroadcastReceiver之前收到广播。
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "received in MyBroadcastReceive", Toast.LENGTH_SHORT).show(); abortBroadcast(); } }
如果在onReceive()方法中调用了abortBroadcast()方法,就表示将这条广播截断,后面的广播接收器将无法再接收到这条广播。
相关文章推荐
- 五种Java多线程同步的方法
- android:installLocation简析
- windows下安装setuptools,pip,virtualenv
- 在tableView中设置手势,获取手势点击位置
- 如何优雅的编写Objective-C语言?
- Apache 重启时会有报 AH00558
- 在VS2013下安装OpenCV3.0
- 如何解决 yum安装出现This system is not registered with RHN
- String str=new String("abc");创建对象个数计算
- kali-linux 安装流程
- android处理不标准的json字符串
- zabbix------监控H3C MSR路由器
- 通过httprequest获取用户ip
- 【转载】AngularJS 用$sce服务来过滤HTML标签,解决无法正确显示后台传递的html标签
- request对象的getAttribute()和getParameter()方法
- 九宫格应用视图创建
- 关于htc m9w更新后手机无限重启的解决办法
- linux管理rpm包
- Python字符编码学习理解
- 纯CSS实现的三级导航菜单效果代码