Android之BroadcastReceiver的使用

一、目标

  1、了解什么是BroadcastReceiver

  2、掌握BroadcastReceiver的使用

  3、了解BroadcastReceiver的生命周期

二、什么是BroadcastReceiver

  1、Broadcast(广播)是一种广泛运用在应用程序之间传播消息的机制

    a、系统消息

      a):Android系统发出的,电池不足、来电信息等

    b、自定义消息

      a):第三方应用发出的广播消息

  2、什么是BroadcastReceiver

    a、广播消息本质上就是一个Intent对象

    b、Intent是一对一的通信,广播消息是一对多的通信

    c、BroadcastReceiver用于接受并处理广播消息

    d、BroadcastReceiver没有用户界面

      I、借助其他方式和用户交互,例如:启动Activity、使用Notification等

三、广播消息的处理流程

  1、广播消息的处理分为三个环节

    a、消息发送

    b、BroadcastReceiver注册

    c、消息处理

四、处理系统广播消息

  1、系统广播都被定义为android.content.Intent中的Action常量

  2、利用BroadcastReceiver捕获系统广播

    I、ACTION_BOOT_COMPLETED可以轻松实现开机后台程序自动运行

  3、系统广播 

      a、android.provider.Telephony.SMS_RECEIVED 短信息
      b、android.intent.action.NEW_OUTGOING_CALL 外拨电话
      c、android.intent.action.MEDIA_UNMOUNTED SD卡未挂载
      d、android.intent.action.MEDIA_UNMOUNTED SD卡未挂载
      e、android.intent.action.MEDIA_MOUNTED SD卡挂载
      f、android.intent.action.MEDIA_REMOVED SD卡拔出

  4、在AndroidManifest.xml文件中增加应用权限声明

<uses-permission 
android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

  5、继承BroadcastReceiver并实现onReceiver方法

public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
    ...
  }
}

五、深入消息处理

    1、无序广播:sentBroadcast(),效率高,但是消息处理之间没有关联、

    2、有序广播sendOrderBroadcast(),可以传递处理数据

  3、持续广播:sendStickyBroadcast()发送的广播一直存在

六、BroadcastReceiver的生命周期

  1、BroadcastReceiver的onReceiver()方法执行完后,其实例就会被销毁。

  2、如果onReceiver()方法在10秒内没有执行完,Android会认为程序无响应。

    a、–所以BroadcastReceiver不能做比较耗时的操作,否则会弹出“Application No Resource”的对话框

原文地址:https://www.cnblogs.com/zhangmawang/p/8086852.html