文档介绍:特殊的广播接收者-锁屏与解屏
Android 中一些操作比较频繁的事件,比如锁屏解屏和电量的变化,也会发送特定的广播。但是此类广播的注册是无法注册在 中,只能在代码中进行注册。
BroadCastReceiver 的注册方式有两种:1、静态注册(就是通过 注册)2、动态注册(就是通过代码注册)。在本文中前面使用到的 BroadCastReceiver 全部都使用的是静态注册方式,其实也可以使用动态注册,但是对于锁屏解屏和电量变化的监听只能通过动态注册。
接下来做一个锁屏和解屏监听的案例。其实很简单,因此只给出核心部分。使用到的 MainActivity 类的代码如【文件 1-23】所示。
【文件 1-23】
1. .;
2.
;
;
;
;
/**
* 动态注册屏幕的锁屏和解屏广播
*
* ***@author wzy2015-11-19
*
*/
public classMainActivity extends Activity{
private ScreenReceiver mReceiver;
***@Override
protected void onCreate(BundlesavedInstanceState){
(savedInstanceState);
setContentView();
//1、创建一个广播接收者对象
mReceiver =new ScreenReceiver();
//2、创建 IntentFilter 对象
IntentFilter filter =newIntentFilter();
//3、添加要监听的 Action
//添加屏幕点亮 Action
();
//添加屏幕关闭 Action
();
//动态注册广播接收者
registerReceiver(mReceiver, filter);
}
23
***@Override
protected void onDestroy(){
();
/*
* 取消注册广播接收者
* 在 onCreate 中注册了,广播接收者,在 onDestory 中就必须反注册,目的是为了防止内存的泄露
*/
unregisterReceiver(mReceiver);
}
41.
42. }
自定义类继承 BroadCastReceiver 类。代码如【文件 1-24】所示。【文件 1-24】
1. .