android 51 有序广播
2015-10-19 21:01
363 查看
无序广播:一条广播发送出去,多个接收者接收没有顺序。
有序广播:广播接收者可以设置优先级,优先级高的先收到广播。
有序广播可以设置优先级。
mainActivity.java
第一个广播接收者:
第二个广播接收者:
系统描述文件:
有序广播:广播接收者可以设置优先级,优先级高的先收到广播。
有序广播可以设置优先级。
mainActivity.java
package com.sxt.day07_06; import android.os.Bundle; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { ThirdReceiver mReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); registgerReceiver(); Intent intent=new Intent("com.sxt.day07_06.order_broadcast"); intent.putExtra("key", "hello java"); sendOrderedBroadcast(intent, null);//发送有序广播 } //注册第三级别的广播接收者,第一第二级别的广播接收者在系统说明文件中注册, private void registgerReceiver() { mReceiver=new ThirdReceiver(); IntentFilter filter=new IntentFilter("com.sxt.day07_06.order_broadcast");//com.sxt.day07_06.order_broadcast广播的字符串 filter.setPriority(600);//设置优先级 registerReceiver(mReceiver, filter); } //java定义的第三级别的广播接收这 class ThirdReceiver extends BroadcastReceiver{ public void onReceive(Context context, android.content.Intent intent) { Log.i("main","ThirdReceiver.onReceive()"); }; } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(mReceiver);//销毁的时候取消注册的广播接收者,释放资源。 } }
第一个广播接收者:
package com.sxt.day07_06; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class FirstReceiver extends BroadcastReceiver { @Override //优先级第一的广播接收者 public void onReceive(Context context, Intent intent) { String value=intent.getStringExtra("key");//mainActivity的字符串 Log.i("main","FirstReceiver.onReceive():"+value); setResultData("来源于FirstReceiver的文本");//向第二级别的广播接收者发送字符串, } }
第二个广播接收者:
package com.sxt.day07_06; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class SecondReceiver extends BroadcastReceiver { @Override //优先级第二的广播接收者 public void onReceive(Context context, Intent intent) { String value=intent.getStringExtra("key");//mainActivity的字符串 String text=getResultData();//第一级别广播接收者发过来的数据 Log.i("main","SecondReceiver.onReceive(),intent中携带的文本:"+value+","+text); if(isOrderedBroadcast()){//如果收到的广播是有序广播 abortBroadcast();//终止广播 } } }
系统描述文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sxt.day07_06" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.sxt.day07_06.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.sxt.day07_06.FirstReceiver"> 注册广播接收者 <intent-filter android:priority="800"> <action android:name="com.sxt.day07_06.order_broadcast"/> </intent-filter> </receiver> <receiver android:name="com.sxt.day07_06.SecondReceiver"> <intent-filter android:priority="700"> <action android:name="com.sxt.day07_06.order_broadcast"/> </intent-filter> </receiver> </application> </manifest>
相关文章推荐
- Android 夜间模式切换,颜色渐变效果实现
- Android功能之第三方Pull-to-Refresh.Rentals-Android下拉刷新
- Android数据存储(1):SharedPreferences
- android 50 进程优先级
- Android功能之第三方SwipeMenuListView,Item项的侧滑
- Android系统移植与调试之------->如何修改Android手机NFC模块,使黑屏时候能够使用NFC
- Android M Permission 学习笔记
- 智能家居Android技术系列之——蓝牙那些事
- android练习:使用get方法发送请求
- Android基础入门教程——9.1 使用SoundPool播放音效(Duang~)
- Android开发者指南(9) —— ProGuard
- Android之二维码生成和识别
- 一天掌握Android JNI本地编程 快速入门
- android 49 广播接收者中启动其他组件
- Android:Material Design - Style - Color
- Android Dialog去掉黑色背景
- android studio编译卡在gradle不能退出
- Android布局-TableLayout表格布局
- Android全面理解Context
- android中操纵sqlite数据库