android特殊广播接收者
2016-12-12 15:52
435 查看
一、概述
比如操作特别频繁的广播事件,如屏幕的锁屏和解锁、电池电量的变化等,这样的广播接收者在清单文件里面注册无效。这是因为若如此频繁的事件不停的触发应用响应,那系统的内存更不不够用,系统不得卡死啊!
若在清单文件中配置运行会有如下错误提示:
Activity com.zgs.screen.MainActivity has leaked IntentReceiver com.zgs.screen.ScreenReceiver@b6486088 that was originally registered here. Are you missing a call to unregisterReceiver()?二、项目目录结构
二、MainActivity.java代码
package com.zgs.screen;
import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
public class MainActivity extends Activity {
private ScreenReceiver screenReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* <receiver android:name="com.itheima.screen.ScreenReceiver">
<intent-filter >
<action android:name="android.intent.action.SCREEN_OFF"/>
<action android:name="android.intent.action.SCREEN_ON"/>
</intent-filter>
</receiver>*/
//[1]动态的去注册屏幕解锁和锁屏的广播
screenReceiver = new ScreenReceiver();
//[2]创建intent-filter对象
IntentFilter filter = new IntentFilter();
//[3]添加要注册的action
filter.addAction("android.intent.action.SCREEN_OFF");
filter.addAction("android.intent.action.SCREEN_ON");
//[4]注册广播接收者
this.registerReceiver(screenReceiver, filter);
}
@Override
protected void onDestroy() {
//当activity销毁的时候 取消注册广播接收者
unregisterReceiver(screenReceiver);
super.onDestroy();
}
}
三、ScreenReceiver.java代码
比如操作特别频繁的广播事件,如屏幕的锁屏和解锁、电池电量的变化等,这样的广播接收者在清单文件里面注册无效。这是因为若如此频繁的事件不停的触发应用响应,那系统的内存更不不够用,系统不得卡死啊!
若在清单文件中配置运行会有如下错误提示:
Activity com.zgs.screen.MainActivity has leaked IntentReceiver com.zgs.screen.ScreenReceiver@b6486088 that was originally registered here. Are you missing a call to unregisterReceiver()?二、项目目录结构
二、MainActivity.java代码
package com.zgs.screen;
import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
public class MainActivity extends Activity {
private ScreenReceiver screenReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* <receiver android:name="com.itheima.screen.ScreenReceiver">
<intent-filter >
<action android:name="android.intent.action.SCREEN_OFF"/>
<action android:name="android.intent.action.SCREEN_ON"/>
</intent-filter>
</receiver>*/
//[1]动态的去注册屏幕解锁和锁屏的广播
screenReceiver = new ScreenReceiver();
//[2]创建intent-filter对象
IntentFilter filter = new IntentFilter();
//[3]添加要注册的action
filter.addAction("android.intent.action.SCREEN_OFF");
filter.addAction("android.intent.action.SCREEN_ON");
//[4]注册广播接收者
this.registerReceiver(screenReceiver, filter);
}
@Override
protected void onDestroy() {
//当activity销毁的时候 取消注册广播接收者
unregisterReceiver(screenReceiver);
super.onDestroy();
}
}
三、ScreenReceiver.java代码
package com.zgs.screen; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class ScreenReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //[1]获取到当前广播的事件类型 String action = intent.getAction(); //[2]对当前广播事件类型做一个判断 if ("android.intent.action.SCREEN_OFF".equals(action)) { System.out.println("屏幕锁屏了"); }else if ("android.intent.action.SCREEN_ON".equals(action)) { System.out.println("说明屏幕解锁了~~~"); } } }四、操作演示
相关文章推荐
- android服务_使用服务注册特殊的广播接收者
- Android之广播接收者--BroadcastReceiver
- Android四大组件之广播接收者
- Android入门:广播接收者应用(短信窃听器)
- Android深入探究笔记之二十 -- 广播接收者,BroadcastReceiver
- Android四大组件之广播接收者
- android 广播接收者--BroadcastReceiver (实现短信窃听)
- Android-广播接收者;短信监听
- android 广播接收者--BroadcastReceiver
- android_短信广播接收者的应用
- android 广播接收者--BroadcastReceiver (实现短信窃听)
- android 之 Broadcast(广播) BroadcastReceiver(广播接收者)
- android 之 Broadcast(广播) BroadcastReceiver(广播接收者)
- Android入门:广播发送者与广播接收者
- Android深入探究笔记之二十 -- 广播接收者,BroadcastReceiver
- android基础--广播接收者-BroadcastReceiver
- 10、Android中广播接收者-BroadcastReceiver
- Android入门:广播接收者应用(电话拦截器)
- Android开发22——广播接收者BroadcastReceiver的原理和注册方式
- android 使用广播接收者监听短信和拦截外拨电话