美文网首页
Android四大组件之一BroadcastReceiver

Android四大组件之一BroadcastReceiver

作者: biginsect | 来源:发表于2018-12-04 10:50 被阅读8次

    定义

            BroadcastReceiver(广播接收器)可以用于过滤外部事件(如数据网络状态发生变化、电话呼入)并对感兴趣的事件作出反应。广播接收器没有用户界面,但可用于启动activity/service,或者可以给用户发送通知(Notification)。

    广播分类

    1.按发送方式分:1)标准广播,Context.sendBroadcast(),以异步的方式传播广播,所有广播接收器几乎在同一时间内收到广播(无顺序之分),此种广播无法被截断、广播数据无法被修改。2)有序广播,Context.sendorderBroadCast(),是以顺序的方式传播广播,同一时刻仅有一个接收器接收到广播,每个接收器都可以选择继续传播或者截断这个广播。广播从优先级最高的接收器传播到优先级最低的,对于同一优先级的接收器,以注册的先后顺序来进行传播。此种广播可以被终止,数据可以被修改。(最高优先级为2^31-1)

    2.按定义分:系统广播&自定义广播。系统广播具有特定的intent-filter,都指定了具体的action。系统广播发送之后将被相应的广播接收器接收。

    广播接收器分类

    1)静态注册,在AndroidManifest注册的广播,随系统启动而运行,程序还未进行就处于活跃状态。此种广播接收器与activity声明周期无关联,activity销毁后依旧能收到广播。(某些action的广播不能使用静态注册)

    2)动态注册,使用代码进行注册的广播接收器。受activity生命周期影响,activity销毁则广播接收器失效。

    注意事项

            广播接收器只有十秒钟左右的生命周期,无法进行耗时的操作,否则会引起ANR。也无法通过开启子线程的方式来进行耗时操作,因为广播接收器在生命周期结束之后很容易被系统回收内存,此时广播接收器所在进程会被杀死(属于空进程)。此时由于宿主进程被杀死,子线程也会被杀死。正确的方式是通过启动service来进行耗时操作。

    相关文章

      网友评论

          本文标题:Android四大组件之一BroadcastReceiver

          本文链接:https://www.haomeiwen.com/subject/hnrrcftx.html