Android 广播和BroadcastReceiver
来源:互联网 发布:泉州五中网络应用平台 编辑:程序博客网 时间:2024/06/18 10:57
Android广播接收器(BroadcastReceiver)
BroadcastReceiver也是android四大组件之一,它的本质是一种系统级别的监听器,只是比普通的监听器级别高一点。
我们可以用Intent来启动一个组件,也可以用sendBroadcast()方法发起一个系统级别的事件广播来传递消息。我们同样可以在自己的应用程序中实现Broadcast Receiver来监听和响应广播的Intent。
因为它本质上是一个监听器,所以使用它的方法也就非常简单,只需要重写onReceiver()方法即可。
当 onReceive()方法在10秒内没有执行完毕,就会导致ANR。如果需要执行长任务,那么就有必要使用Service。千万不要使用新线程,这是很危险的事情。因为有可能线程没有执行完,BroadcastReceiver就挂了。另外,BroadcastReceiver会堵塞主线程。唯有onReceive()结束,主线程才得以继续进行。
下面简要说一下它的使用方法:
它的使用还需要说明BroadcastReceiver相匹配的intent,实现这一步,可以有两种方式。
(1)在xml配置文件中说明,这种方法对资源占用比较大
<receiver android:name=".MyBroadcastReceiver" >
<intent-filter android:priority="1000" > //1000是优先级
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> //这里的名字可以只是一个普通的字符串,用来标识
</intent-filter>
</receiver>
(2)在代码中动态获取:
IntentFilter filter = new IntentFilter();
filter.addAction(android.net.conn.CONNECTIVITY_CHANGE);
filter.setPriority(Integer.MAX_VALUE);
registerReceiver(myReceiver, filter);
注:最后要记得,动态注册的广播接收器一定要取消注册才行unRegisterReceiver()。
有序广播和无序广播:
1.有序广播
广播是一种可以跨进程的通信方式,其他应用程序是可以收到的。现在我们来发一条有序广播。
有序广播不仅有先后顺序,而且前面的广播还可以将后面的广播截断。
Button button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent =new Intent("android.net.conn.CONNECTIVITY_CHANGE");
sendOrderedBroadcast(intent, null);
}
});
拦截广播,可以让后边的接收器接收不到广播:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received in MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
abortBroadcast();//拦截广播,防止后面的接收到
}
}
2.无序广播(普通广播)
Intent intent = new Intent();
//设置intent的动作为com.example.broadcast,可以任意定义
intent.setAction("com.example.broadcast");
//发送无序广播
sendBroadcast(intent);
- Android 广播和BroadcastReceiver
- Android学习和使用广播BroadCastReceiver
- android BroadcastReceiver详解2 无序广播和有序广播
- Android-广播BroadcastReceiver-自定义广播接受者和发送者
- BroadCastReceiver android 广播接收器
- android 广播接收者--BroadcastReceiver
- android 广播接收者--BroadcastReceiver
- Android广播BroadcastReceiver
- android 广播 BroadcastReceiver
- Android 广播接收者--BroadcastReceiver
- android 广播(broadcastReceiver)详解
- Android广播BroadcastReceiver
- Android广播机制(BroadcastReceiver)
- Android广播BroadcastReceiver
- Android广播BroadcastReceiver
- Android BroadcastReceiver广播
- Android BroadcastReceiver广播详解
- Android BroadcastReceiver 广播接收者
- ffmpeg 安装
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
- 机器视觉学习之--EM算法
- android-Button,ImageButton的文本内容填写
- Android源码在线查阅
- Android 广播和BroadcastReceiver
- 系统服务
- javax.xml.namespace.QName 解释以及作用JDK
- ajax回调中不可能是list
- 颜色英文单词总汇(申明:来自于360)
- ionic中android的返回键
- 【OpenCV入门教程之十五】水漫金山:OpenCV漫水填充算法(Floodfill)
- php遍历文件夹下面的所有文件,得到文件路径
- JavaScript中函数作用域的理解(转)