Android开发--四大组件之BroadcastReceiver广播接收器
2016-10-17 11:34
1116 查看
一、广播分类
1.标准广播
没有顺序的广播,完全异步,几乎会同步收到广播,效率高,不能被截断。2.有序广播
有顺序的广播,只有前面的广播接收器接受完毕(同一时刻只有一个广播接收器能收到消息),后面的广播接收器才能收到。可以设置优先级(优先级高的将会先收到广播消息)。先收到消息的广播接收器可以截断广播,使后面的广播接受器无法再收到。二、注册广播的方式
1.动态注册(在代码中注册)
public class MainActivity extends Activity { private IntentFilter intentFilter; private MyReceiver receiver; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //过滤出需要监听的广播 intentFilter = new IntentFilter(); intentFilter.addAction("---换成需要监听的广播内容---"); //创建接收器实例 receiver = new MyReceiver (); //注册广播 registerReceiver(receiver,intentFilter); btn = (Button) findViewById(R.id.click_btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //发送广播 Intent intent = new Intent("---注册自定义的广播逻辑---"); sendBroadcast(intent); //发送有序广播时使用sendOrderedBroadcast,同时在AndroidManifest中将需要先接收到的接受者优先级(priority)设置高一点,将会截断广播。 //sendOrderedBroadcast(intent,null); } }); } @Override protected void onDestroy() { super.onDestroy(); //取消注册(这里很重要) unregisterReceiver(receiver); } //这里是一个内部类集成广播接收器,当然也可以是单独的一个文件(在onReceive中完成接收到广播需要操作的逻辑) class MyReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { } } }
2.静态注册(在AndroidManifest.xml中注册)
1).AndroidManifest.xml内容<receiver android:name=".MyBroadcastReceiver"> <!--priority可以设置优先级--> <intent-filter android:priority="100"> <!--action中是自定义的广播逻辑--> <action android:name="com.example.keven.MY_BROADCAST"/> </intent-filter> </receiver>
2).MyBroadcastReceiver继承自BroadcastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"received from MyBroadcastReceiver",Toast.LENGTH_SHORT).show(); } }
3).代码中再通过事件触发
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //发送广播 Intent intent = new Intent("com.example.keven.MY_BROADCAST"); sendBroadcast(intent); //发送有序广播时使用sendOrderedBroadcast,同时在AndroidManifest中将需要先接收到的接受者优先级(priority)设置高一点,将会截断广播。 //sendOrderedBroadcast(intent,null); } });
三、本地广播
之前发送和接受的广播都属于系统全局广播,即发出的广播可以被其他任何应用程序接收到,我们也可以接受来自于其他任何应用程序的广播。这样便存在安全隐患。为了解决这个问题,Android引入了一套本地广播机制,使用这个机制发出的广播只能够在应用程序内部进行传递,并且广播接收器也只能接受来自本应用程序发出的广播。 优点:1.安全 2.效率高本地广播主要使用了LocalBroadcastManager来对广播进行管理,并提供了发送广播和注册广播的方法。(这里修改MainActivity文件进行说明,其实很简单,只是在注册、取消注册以及发送广播之前加上引用就行)
–>这里参照郭霖大神的《第一行代码》,个人感觉这是一本好书,适合初学者学习,推荐!!!郭霖大神的博客也是很好的学习的地方。—— [ 郭霖csdn博客 ]public class MainActivity extends Activity { private IntentFilter intentFilter; private MyReceiver receiver; private Button btn; private LocalReceiver localReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取LocalBroadcastManager实例 localBroadcastManager = LocalBroadcastManager.getInstance(this); //过滤出需要监听的广播 intentFilter = new IntentFilter(); intentFilter.addAction("---换成需要监听的广播内容---"); //创建接收器实例 receiver = new MyReceiver (); //注册广播 localBroadcastManager.registerReceiver(receiver,intentFilter); btn = (Button) findViewById(R.id.click_btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //发送广播 Intent intent = new Intent("---注册自定义的广播逻辑---"); localBroadcastManager.sendBroadcast(intent); //发送有序广播时使用sendOrderedBroadcast,同时在AndroidManifest中将需要先接收到的接受者优先级(priority)设置高一点,将会截断广播。 //sendOrderedBroadcast(intent,null); } }); } @Overrid 9a6d e protected void onDestroy() { super.onDestroy(); //取消注册(这里很重要) localBroadcastManager.unregisterReceiver(receiver); } //这里是一个内部类集成广播接收器,当然也可以是单独的一个文件(在onReceive中完成接收到广播需要操作的逻辑) class MyReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { } } }
相关文章推荐
- Android四大组件之四:BroadcastReceiver 广播接收器
- Android开发——四大组件BroadcastReceiver实例广播事件的拦截转发
- Android的四大组件之一 BroadcastReceiver多种广播接收器的灵活使用
- android开发步步为营之38:四大组件之BroadcastReceiver接收广播
- 【Android学习之道】 四大组件之广播接收器Broadcast Receiver
- Android 四大组件之一 :BroadCastReceiver 广播接收器详解
- Android笔记---四大组件之Broadcast Receive广播接收器详解
- Android四大组件之一:BroadcastReceiver(广播接收者)
- Android四大组件之Broadcast Receiver(广播)
- Android四大组件之一:BroadCastReceiver(广播接收者)
- Android四大基本组件之一 ,广播(broadcast receiver)---有序广播
- Android四大组件之Broadcast(广播接收BroadcastReceiver)
- Android四大组件之广播接收者(BroadcastReceiver)
- Android 四大组件之BroadcastReceiver(发送有序无序广播)
- Android四大组件---BroadcastReseiver(广播接收器)
- android四大组件之BroadCastReceiver的开发实例
- Android四大组件BroadcastReceiver 广播接收者
- Android开发总结笔记 四大组件之BroadcastReceiver 1-2-7
- Android四大组件——广播(BroadcastReceiver)
- Android四大组件之broadcastreceiver(广播)