①有序广播:接收者A收到广播传递给B,B传给C,有序传递。任何一个环节都可以终止广播,也可以修改广播中携带的数据。
发送的方式:sendOrderedbroadcast(intent,receiverPermission);
【提示】①第二个参数是设置发送的权限,这里可以设为null
②接收有序广播是需要在intent-flter中设置priority,值越大则先执行,相同则按照注册顺序
②无序广播:一个广播发送者,向所有接收者同时发送广播,也就是ABC接收者都同时响应。
发送方式:sendbroadcast(intent)
2、【广播接收者】按是否常驻分类①常驻型广播接收者:在androIDManifest.xml中注册,只要应用程序没有被卸载就持续存在。
②非常驻型广播接收者:在java代码中注册,一般随Activity或者Service组件产生而产生,随他们销毁而销毁。生命周期比较短。使用的方法是registerReceiver(参数1:广播接收者实例,参数2:频道(意图过滤器));unregisterReceiver(广播接收者实例)
二、项目一【发送广播】【步骤】
①定义一个广播接收者,自定义添加intent-fliter中的action name
②添加按钮,点击事件
③定义intent,设置action,发送广播
【项目结构】【MyReceiver】
1 import androID.content.broadcastReceiver; 2 androID.content.Context; 3 androID.content.Intent; 4 androID.Widget.Toast; 5 6 public class MyReceiver extends broadcastReceiver { 7 8 @OverrIDe 9 voID onReceive(Context context,Intent intent) {10 // Todo: This method is called when the broadcastReceiver is receiving11 Toast.makeText(context,"收到广播",Toast.LENGTH_SHORT).show();12 }13 }
【AndroIDManifest.xml】1 <receiver2 androID:name=".receiver.MyReceiver"3 androID:enabled="true"4 androID:exported="true">5 intent-filter6 action ="com.example.MyApplication2.myreceiver" />7 </8 receiver>
【activity_main.xml】1 button2 androID:ID="@+ID/btn" androID:text="发送广播" androID:layout_wIDth="match_parent"5 androID:layout_height="wrap_content" />
【MainActivity】 androID.support.v7.app.AppCompatActivity; androID.os.Bundle; androID.vIEw.VIEw; 5 androID.Widget.button; 6 7 class MainActivity AppCompatActivity { 8 9 button btn;10 11 protected onCreate(Bundle savedInstanceState) {12 super.onCreate(savedInstanceState);13 setContentVIEw(R.layout.activity_main);14 15 btn = findVIEwByID(R.ID.btn);16 btn.setonClickListener(new VIEw.OnClickListener() {17 @OverrIDe18 onClick(VIEw vIEw) {19 Intent intent = new Intent("com.example.MyApplication2.myreceiver");20 sendbroadcast(intent);21 }22 });23 24 25 }
【提示】发送广播intent设置的action要和广播接受者设置的action相同,这样广播接收者才能收到发送的广播
【效果】点击
二、项目二【发送有序广播】【步骤】
①定义三个广播接收者,观察顺序
②添加按钮点击
③设置intent,发送有序广播
【项目结构】【定义三个广播接收者并注册】
2 =".receiver.MyOrderReceiver1" 3 4 5 intent-filter androID:priority="1000" 6 ="com.example.MyApplication2.myreceiver" 7 8 9 10 =".receiver.MyOrderReceiver2"11 12 13 ="100"14 15 16 17 18 =".receiver.MyOrderReceiver3"19 20 21 ="10"22 23 24 >
【提示】设置priority为不同的值,action name为相同的,接收同一个广播
【MainActivity】
1 btn2 = findVIEwByID(R.ID.btn2);2 btn2.setonClickListener(3 4 5 Intent intent = new Intent("com.example.MyApplication2.myreceiver"6 sendOrderedbroadcast(intent,null7 8 });
【效果】点击按钮执行顺序
总结
以上是内存溢出为你收集整理的Broadcast发送广播全部内容,希望文章能够帮你解决Broadcast发送广播所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)