Broadcast 广播机制总结
2015-12-01 19:00
288 查看
Android中广播可分为标准广播和有序广播两种。
标准广播:是异步执行的广播,广播发出后所有的广播接收器都会在同一时刻接收到消息,这种模式效率高,但是它无法被拦截。
有序广播:是同步执行的广播,广播发出之后同一时刻只能有一个广播接收器能够收到信息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的接收器先收到消息,而且接收器还可以选择拦截消息,使后面的接收器无法接收到消息。
小项目:发送自定义广播
1、新建一个Android项目并且设置一个广播接收器,新建一个MyBroadcast.java
2、在AndroidManifest.xml文件中注册广播接收器
action中的内容为广播内容,当监听器听到这条信息时就进入监听器。
3、在activity_main.xml中添加一个按钮
4、在MainActivity.java中给按钮设置相应动作
结束
标准广播:是异步执行的广播,广播发出后所有的广播接收器都会在同一时刻接收到消息,这种模式效率高,但是它无法被拦截。
有序广播:是同步执行的广播,广播发出之后同一时刻只能有一个广播接收器能够收到信息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的接收器先收到消息,而且接收器还可以选择拦截消息,使后面的接收器无法接收到消息。
小项目:发送自定义广播
1、新建一个Android项目并且设置一个广播接收器,新建一个MyBroadcast.java
public class MyBroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 接收器接收到广播后会触发onReceive方法,这里面是相关处理逻辑 Toast.makeText(context, "This is my Broadcast.", Toast.LENGTH_SHORT) .show(); } }
2、在AndroidManifest.xml文件中注册广播接收器
// 这个写到<application里 <receiver android:name=".MyBroadcast" > <intent-filter> <action android:name="com.example.mybroadcast.MY_BROADCAST"/> </intent-filter> </receiver>
action中的内容为广播内容,当监听器听到这条信息时就进入监听器。
3、在activity_main.xml中添加一个按钮
<Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="100dp" android:text="Send Broadcast" android:textSize="20sp" />
4、在MainActivity.java中给按钮设置相应动作
... public class MainActivity extends ActionBarActivity { private Button button = null; private Intent intent = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.send); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 将要发送的广播消息添加到Intent中 intent = new Intent("com.example.mybroadcast.MY_BROADCAST"); // 发送广播 sendBroadcast(intent); } }); } ... }
结束
相关文章推荐
- ubuntu 14.04 更新 flash
- 多态 第二课
- ISAPI_Rewrite3.1相关知识
- 1018. Public Bike Management (30)——PAT (Advanced Level) Practise
- 谈谈asp.net
- WIFI之服务器系统设计组成
- vmprotect
- 蓝桥杯OJ刷题日记——07-基础练习 特殊的数字
- 谈谈head first系列
- overridePendingTransition和FLAG_ACTIVITY_REORDER_TO_FRONT同时使用时,没有Activity启动动画
- java中类与类之间,类与方法之间的调用程序
- 利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- form表单提交数据到servlet的action=" "路径问题
- 转 awk中RS,ORS,FS,OFS区别与联系
- Python——参数(1)
- Java类和对象基础
- Tomcat中Java垃圾收集调优
- 分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
- 首届CCF计算机职业资格认证考试题解(C++)
- 网络之Snmp的学习总结