Android_BroadcastReceiver详解
来源:互联网 发布:数据机房消防规范 编辑:程序博客网 时间:2024/05/16 19:37
Android_BroadcastReceiver详解
一、概述:
Android系统的四大组件之一BroadcastReceiver本质上就是一种全局监听器,用于监听系统全局的广播。
二、简介:
BroadcastReceiver用于接收程序所发出的Broadcast Intent,过程如下:
1.创建启动BroadcastReceiver的Intent。
2.调用Context的sendBroadcast()或者sendOrdereBroadcast()方法来启动指定的BroadcastReceiver。
①发送自定义广播:
public class MainActivity extends Activity {private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根Intent intent = new Intent();intent.setAction("com.example.blogbroadcastreceiver.husheng");intent.putExtra("husheng", "hello BroadcastReceiver !");sendBroadcast(intent);} }); }
public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO 自动生成的方法存根Toast.makeText(context, intent.getAction()+"\n"+intent.getStringExtra("husheng"), Toast.LENGTH_LONG).show();}}
<receiver android:name=".MyBroadcastReceiver"> <intent-filter > <action android:name="com.example.blogbroadcastreceiver.husheng"/> </intent-filter> </receiver>
②发送有序广播:
public class MainActivity extends Activity {private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO 自动生成的方法存根Intent intent = new Intent();intent.setAction("com.example.blogbroadcastreceiver.husheng");intent.putExtra("husheng", "hello BroadcastReceiver !");sendOrderedBroadcast(intent,null);} }); }}
public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO 自动生成的方法存根Toast.makeText(context, "first\n"+intent.getStringExtra("husheng"), Toast.LENGTH_LONG).show();abortBroadcast();}}
public class anotherBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO 自动生成的方法存根Toast.makeText(context, "second\n"+intent.getStringExtra("husheng"), Toast.LENGTH_LONG).show();}}
<receiver android:name=".MyBroadcastReceiver"> <intent-filter android:priority="100"> <action android:name="com.example.blogbroadcastreceiver.husheng"/> </intent-filter> </receiver> <receiver android:name=".anotherBroadcastReceiver"> <intent-filter > <action android:name="com.example.blogbroadcastreceiver.husheng"/> </intent-filter> </receiver>
配置文件中,前一接收者中 android:priority="100" 保证它的优先级较高,先接收到广播。
没有加abortBroadcast()之前,两者都可以接收到广播,加了abortBroadcast()之后,阻断了广播,第二个接收者没有接收到广播。
三、深入:
使用本地广播:
public class MainActivity extends Activity {private IntentFilter intentFilter;private LocalReceiver localReceiver;private LocalBroadcastManager localBroadcastManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);localBroadcastManager = LocalBroadcastManager.getInstance(this);Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");localBroadcastManager.sendBroadcast(intent);}});intentFilter = new IntentFilter();intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");localReceiver = new LocalReceiver();localBroadcastManager.registerReceiver(localReceiver, intentFilter);}@Overrideprotected void onDestroy() {super.onDestroy();localBroadcastManager.unregisterReceiver(localReceiver);}class LocalReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "received local broadcast",Toast.LENGTH_SHORT).show();}}}
本地广播的优势:
1.安全,不会泄露数据。
2.高效。
四、总结:
0 0
- Android_BroadcastReceiver详解
- android_BroadcastReceiver
- Android_BroadcastReceiver广播接收者详解及应用
- Android_BroadcastReceiver广播接收者详解及应用
- Android_BroadcastReceiver(一)
- Android_BroadcastReceiver(二)
- Android_BroadcastReceiver(三)
- android_BroadcastReceiver 广播机制
- 详解
- 详解
- 详解
- 详解
- &,&&,|,||详解
- 详解
- Scala详解--------基础知识详解
- Spring详解-----------事务详解
- github 详解详解
- InputFilter详解、TextWatcher详解
- Spring+Quartz整合
- C# Winform DataGridView 全选
- Python基础教程笔记——条件,循环和其他语句
- Leetcode--SortColors
- The connection to adb is down, and a severe error has occured.问题解决方法小结
- Android_BroadcastReceiver详解
- 进程与线程的一个简单解释
- spring之spring与Quartz整合(二)
- late_initcall和module_init
- scala编程--特质
- MediaPlayer支持较大音乐文件的播放,但资源占用率高,延迟时间长,且不支持多个音频同时播放。
- crontab
- 自定义EL表达式的函数
- Hadoop Hive与Hbase关系 整合