住:需要在mainfast中通配置权限并使用权限

<permission android:protectionLevel="normal" android:name="broadcastyouxupro"></permission>
<uses-permission android:name="broadcastyouxupro"/>

Intent intent=new Intent();
intent.setAction("broadcast_youxu");
sendOrderedBroadcast(intent, "broadcastyouxupro");





android有序广播

    博客分类:
  • android

普通广播(Normal Broadcast):

一,优缺点:和有序广播的优缺点相反!

二,发送广播的方法:sendBroadcast()


有序广播(Ordered Broadcast):

一,优缺点

优点:1,按优先级的不同,优先Receiver可对数据进行处理,并传给下一个Receiver

2,通过abortBroadcast可终止广播的传播

缺点:效率低

二,发送广播的方法:sendOrderedBroadcast()

三,优先接收到Broadcast的Receiver可通过setResultExtras(Bundle)方法将处理结果存入Broadcast中,

下一个Receiver 通过 Bundle bundle=getResultExtras(true)方法获取上一个Receiver传来的数据

程序效果:点击按钮,两个Receiver接收同一条广播,在logcat中打印出数据(按照Receiver的优先顺序,Receiver2先,Receiver1后

Java代码 收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.song"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdkandroid:minSdkVersion="8"/>
  7. <application
  8. android:icon="@drawable/ic_launcher"
  9. android:label="@string/app_name">
  10. <activity
  11. android:label="@string/app_name"
  12. android:name=".C48_BroadcastActivity">
  13. <intent-filter>
  14. <actionandroid:name="android.intent.action.MAIN"/>
  15. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  16. </intent-filter>
  17. <!--优先级的设定MyReceiver2大于MyReceiver1,优先级的范围-1000~1000-->
  18. </activity>
  19. <receiverandroid:name=".MyReceiver1">
  20. <intent-filterandroid:priority="200">
  21. <actionandroid:name="com.song.123"/>
  22. </intent-filter>
  23. </receiver>
  24. <receiverandroid:name=".MyReceiver2">
  25. <intent-filterandroid:priority="1000">
  26. <actionandroid:name="com.song.123"/>
  27. </intent-filter>
  28. </receiver>
  29. </application>
  30. </manifest>

Java代码 收藏代码
  1. packagecom.song;
  2. //发送广播,bundle绑上key为a的数据
  3. importandroid.app.Activity;
  4. importandroid.content.Intent;
  5. importandroid.os.Bundle;
  6. importandroid.view.View;
  7. importandroid.view.View.OnClickListener;
  8. importandroid.widget.Button;
  9. publicclassC48_BroadcastActivityextendsActivity{
  10. /**Calledwhentheactivityisfirstcreated.*/
  11. Buttonbutton;
  12. @Override
  13. publicvoidonCreate(BundlesavedInstanceState){
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. button=(Button)findViewById(R.id.button);
  17. button.setOnClickListener(newOnClickListener(){
  18. @Override
  19. publicvoidonClick(Viewv){
  20. //TODOAuto-generatedmethodstub
  21. Intentintent=newIntent("com.song.123");
  22. Bundlebundle=newBundle();
  23. bundle.putString("a","aaa");
  24. intent.putExtras(bundle);
  25. //有序广播
  26. sendOrderedBroadcast(intent,null);
  27. }
  28. });
  29. }
  30. }

Java代码 收藏代码
  1. packagecom.song;
  2. //优先接到广播,bundle绑上key为b的数据
  3. importandroid.content.BroadcastReceiver;
  4. importandroid.content.Context;
  5. importandroid.content.Intent;
  6. importandroid.os.Bundle;
  7. publicclassMyReceiver2extendsBroadcastReceiver{
  8. @Override
  9. publicvoidonReceive(Contextcontext,Intentintent){
  10. //TODOAuto-generatedmethodstub
  11. System.out.println("receiver2");
  12. //context.getSystemService(name);
  13. Bundlebundle=intent.getExtras();
  14. bundle.putString("b","bbb");
  15. System.out.println("a="+bundle.get("a"));
  16. setResultExtras(bundle);
  17. //切断广播
  18. //abortBroadcast();
  19. }
  20. }

Java代码 收藏代码
  1. packagecom.song;
  2. //接收从receiver2传来的广播,包含key为a和b的数据
  3. importandroid.content.BroadcastReceiver;
  4. importandroid.content.Context;
  5. importandroid.content.Intent;
  6. importandroid.os.Bundle;
  7. publicclassMyReceiver1extendsBroadcastReceiver{
  8. @Override
  9. publicvoidonReceive(Contextcontext,Intentintent){
  10. //TODOAuto-generatedmethodstub
  11. System.out.println("receiver1");
  12. //要不要接受上一个广播接收器receiver2传来的的数据
  13. Bundlebundle=getResultExtras(true);
  14. System.out.println("a="+bundle.getString("a")+",b="+bundle.getString("b"));
  15. }
  16. }

更多相关文章

  1. Android开发之如何手写代码进行页面布局
  2. Android跳转淘宝商品详情页代码
  3. android通过Intent调用手机图片,音频,视频录音拍照等代码
  4. Android开源项目:微信打飞机游戏源代码
  5. android 测试读取LEB数据的函数
  6. android中在切换fragment时,怎样做到无需重复加载数据的方法。
  7. android 开发常用代码备查[更新20150520]

随机推荐

  1. Android Shareperferences使用
  2. Android 坐标系统
  3. Android两种 旋转Bitmap方法
  4. Android Bluetooth Stream Non-blocking
  5. Android 程序优化
  6. ANDROID NDK makefile 链接静态库的方法
  7. android Studio导入source文件
  8. Android UI 开源组件
  9. Android平台上部署OSGI
  10. BroadcastReceiver.PendingResult