我爱编程

Android 开发学习笔记(三)—— BroadcastRec

2018-04-12  本文已影响0人  isletn
  1. BroadcastReceiver :实际上就是一个广播接收器。
  2. 使用:

<1> 创建一个BroadcastReceiver的子类,必须实现onReceive()方法

    ```
    public class MyBroadcastReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
          // 这里实现收到广播后的逻辑
        }
    }
    ```

<2>注册分两种

这种方式注册,接收器会一直占用内存,不受任何组件生命周期影响,比较耗电。

@Override
    protected void onResume() {
        super.onResume();
        // 首先,实例化我们创建的BroadcastReceiver的子类
        broadcastReceiver = new MyBroadcastReceiver();
        IntentFilter intentFilter = new IntentFilter();
        // 然后,设置接收广播的类型
        intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        // 注册
        registerReceiver(broadcastReceiver, intentFilter);
    }
@Override
// 通过动态注册的方法使用BroadcastReceiver 必须要在此方法中注销
    protected void onPause() {
        super.onPause();
        unregisterReceiver(broadcastReceiver);
    }

<3>发送广播

Intent intent = new Intent();
// 如果这里设置intentFilter的action与注册时写的一致,那么BroadcastReceiver会接收到这个广播
intent.setAction(ConnectivityManager.CONNECTIVITY_ACTION);
sendBroadcast(intent);

<4>系统广播

系统操作 action
关闭或打开飞行模式 Intent.ACTION_AIRPLANE_MODE_CHANGED
充电时或电量发生变化 Intent.ACTION_BATTERY_CHANGED
电池电量低 Intent.ACTION_BATTERY_LOW
电池电量充足(即从电量低变化到饱满时会发出广播 Intent.ACTION_BATTERY_OKAY
系统启动完成后(仅广播一次) Intent.ACTION_BOOT_COMPLETED
检测网络变化 ConnectivityManager.CONNECTIVITY_ACTION
按下照相时的拍照按键(硬件按键)时 Intent.ACTION_CAMERA_BUTTON
屏幕锁屏 Intent.ACTION_CLOSE_SYSTEM_DIALOGS
设备当前设置被改变时(界面语言、设备方向等) Intent.ACTION_CONFIGURATION_CHANGED
插入耳机时 Intent.ACTION_HEADSET_PLUG
未正确移除SD卡但已取出来时(正确移除方法:设置–SD卡和设备内存–卸载SD卡) Intent.ACTION_MEDIA_BAD_REMOVAL
插入外部储存装置(如SD卡) Intent.ACTION_MEDIA_CHECKING
成功安装APK Intent.ACTION_PACKAGE_ADDED
成功删除APK Intent.ACTION_PACKAGE_REMOVED
重启设备 Intent.ACTION_REBOOT
屏幕被关闭 Intent.ACTION_SCREEN_OFF
屏幕被打开 Intent.ACTION_SCREEN_ON
关闭系统时 Intent.ACTION_SHUTDOWN
上一篇下一篇

猜你喜欢

热点阅读