关闭

Android基础知识整合篇——广播接收器知识点

标签: androidbroadcastreceiver
792人阅读 评论(0) 收藏 举报
分类:


    好的,我又来完成我的个人第一个连载博客了,上次介绍的是Activity相关的基础知识,这次为大家带来广播接收器的相关解释和说明。希望博客能给诸位一点小小的帮助,也就是对我博客最大的鼓励!

四大组件——BroadcastReceiver

广播分类:

标准广播:是一种完全异步执行的广播,它无法被截断,广播发出后,所有的接收器都能在同一时刻收到广播消息,因此没有先后顺序,所以它的效率比较高。

有序广播:是一种同步执行的广播,广播发出后只有一个接收器收到它,处理完成后再继续往下传播,因此这时广播存在先后顺序。优先级高的接收器可以优先接收,并且广播可以被截断。

 

广播接收器:可以自由的对感兴趣的广播进行注册,注册方式一般有两种:

动态注册:在代码里新建实例来进行注册。

先定义成员变量,再新建实例

intentFilter=new intentFilter();
intentFilter.addAction(“android.net.conn.CONNECTIVITY_CHANGE”);
networkChangeReceiver=new NetWorkChangeReceiver();
registerReceiver(networkChangeReceiver,intentFilter);

别忘了注册完成后,在活动销毁时注销接收器释放系统资源!

protected void onDestroy(){
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}

接收广播需要新建类并继承BroadcastReceiver重写onReceive方法

class NetworkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context,Intent intent){
Toast.makeText(context,”network changes”,Toast.LENGTH_SHORT).show();
}
}

通过onReceive方法接收到广播后打印消息

 

静态注册:在AndroidMainifest.xml里添加标签。

新建一个Receiver类继承BroadcastReceiver如下:

public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context,Intent intent){
Toast.makeText(context,”Complete”,Toast.LENGTH_SHORT).show();
}
}

<receiver android:name=”.MyReceiver”></receiver>静态注册

 

发送自定义广播

发送前,要先定义个标签用来标示广播

<receiver android:name=”.MyBroadcastReceiver”>
<intent-filter>
<action android:name=”包名.MY_BROADCAST”/>
</intent-filter>
</receiver>

然后用Intent识别标签并发送广播:

Intent intent=new Intent(“包名.MY_BROADCAST”);
sendBroadcast(intent);

此时发出的就是一条标准广播。然而发送有序广播的不同点就是在<intent-filter>

里加入权限级别<intent-filter android:priority=”100”>,priority表示接收广播的级别"2147483647"为最高优先级,这样优先级高的就会先收到广播,中断广播只需要调用abortBoradcast方法。

注意

1.生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报ANR(ApplicationNo Response) 程序无响应的错误信息,如果需要完成一项比较耗时的工作 , 应该通过发送 Intent 给 Service, 由Service来完成 . 这里不能使用子线程来解决 , 因为 BroadcastReceiver 的生命周期很短 , 子线程可能还没有结束BroadcastReceiver 就先结束了 .BroadcastReceiver 一旦结束 , 此时 BroadcastReceiver 的所在进程很容易在系统需要内存时被优先杀死 , 因为它属于空进程 ( 没有任何活动组件的进程 ). 如果它的宿主进程被杀死 , 那么正在工作的子线程也会被杀死 . 所以采用子线程来解决是不可靠的。

2. 动态注册广播接收器还有一个特点,就是注册的Activity关掉后,广播就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开的。系统常见广播Intent,如开机启动、电池电量变化、时间改变等广播。


------------------------------------------------------------------------------------------------------

好了,关于四大组件——BroadcastReceiver所涉及的各个方面基本都解释到了,如果还有不全面或是解释有误的点,欢迎广大看官给予点评和建议,本人必定细心查看,纠察改错。尴尬
 
敬请关注下一篇连载:四大组件——Service!再见


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java基础复习,整理知识点

最近开始复习Java基础,和Android,将知识点整理如下,另外开始尝试使用MarkDown写博客,写的有问题的地方还请各位包含。Android部分的内容整理见我的另一篇博客1.Java关键字总结梳...
  • SCUcoder
  • SCUcoder
  • 2016-03-07 19:51
  • 4167

SQL SERVER 基础篇(一):知识点、SQL语句学习及详细总结

SQL SERVER 基础篇,详细总结学习sql语句和知识点,适合入门
  • ITermeng
  • ITermeng
  • 2016-12-09 07:48
  • 2799

【Unity3D】基础知识学习笔记

Unity3D基础知识学习笔记 1、基础知识: 标题栏 菜单栏 工具栏:变换工具、gizmos切换、播放控件、层列表、布局列表 功能窗口 2、资源及资源类型:在project里面能够create的资...
  • woaini454186694
  • woaini454186694
  • 2016-05-25 22:53
  • 4571

BroadcastReceiver广播接收器知识点总结

广播在应用程序中担任的角色:只担任开启程序其他组件的角色。不能在广播接收器中进行过多的业务逻辑和耗时的操作,不能开启线程等。 根据广播的性质可以将广播分为:标准广播和有序广播 根据广播的范围可...
  • wyb112233
  • wyb112233
  • 2015-06-27 11:29
  • 632

Android基础知识整合篇——Activity知识点

Android基础知识部分整合连载篇——四大组件——Activity     今天,我着手开始android基础知识总体整合以及复习(结合郭霖大神的《第一行代码》),来对我这段时间碎片化的知识进行总结...
  • wxj1018
  • wxj1018
  • 2016-05-30 20:38
  • 4899

Android基础知识整合篇——Service知识点

继续完成连载博客,上次介绍的是Broadcast相关的基础知识,这次为大家带来Service的相关解释和说明。希望博客能给诸位一点小小的帮助! 四大组件——service   服务:...
  • wxj1018
  • wxj1018
  • 2016-06-01 08:36
  • 737

Android基础知识整合篇——ContentProvider知识点

继续完成连载博客,上次介绍的是Service相关的基础知识,这次为大家带来ContentResolver的相关解释和说明。希望博客能给诸位一点小小的帮助! 四大组件——ContentReso...
  • wxj1018
  • wxj1018
  • 2016-06-02 09:58
  • 630

Android基础:广播接收器及其生命周期介绍

广播接收器(Broadcast Receivers)只是接收广播并对广播信息做出作出反应,多数的广播是由系统代码发出的——比如反应时区变化的通知,电量低的通知,照了一张照片的通知,或者用户修改了系统语...
  • cuigx1991
  • cuigx1991
  • 2015-08-10 18:21
  • 1238

Android基础-broadcastreceiver(广播接收器)

什么是broadcastreceiver?     broadcastreceiver是一种在应用之间传输信息数据的一种机制。是Android四大组件之一。那么broadcastreceiver是如...
  • u011291302
  • u011291302
  • 2013-09-12 06:18
  • 617

Android BroadcastReceiver(广播接收器)基础

Android BroadcastReceiver(广播接收器)基础
  • qq_37332274
  • qq_37332274
  • 2017-02-07 19:07
  • 102
    个人资料
    • 访问:20139次
    • 积分:458
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:1篇
    • 译文:0篇
    • 评论:3条
    博客专栏
    最新评论