锁屏清理进程(广播接受者)

2 篇文章 0 订阅
1 篇文章 0 订阅
  1. #锁屏清理进程# (重点)

{如以前的搜狗手机输入法,在锁屏以后进程没有清理还在进行定位相当耗电,(现在有那种检测软件耗电,流量情况就知道是你的软件在搞鬼),所以你懂得!}

锁屏和解锁的广播接受者是不能在清单文件中注册的,必须使用代码进行注册,避免一些恶意程序的骚扰

1.隐藏系统进程
	a.创建一个boolean变量,表示是否隐藏系统进程
		//是否显示系统进程
		private boolean isShowSystem = true;
	b.在Myadapter的getCount方法进行判断
		@Override
		public int getCount() {
			//方便我们从不同的集合中拿出数据
			return isShowSystem == true ? userAppInfos.size()+1+systemAppInfos.size()+1 : userAppInfos.size()+1;
		}
	c.在设置的点击事件中更改boolean变量的值
		/**
		 * 设置
		 * @param v
		 */
		public void setting(View v){
			//true改为false   false改为true
			isShowSystem = !isShowSystem;
			//更新界面
			myAdapter.notifyDataSetChanged();
		}
2.锁屏清理进程
	a.在服务中创建一个广播接受者
		private class ScreenOffReceiver extends BroadcastReceiver{

			@Override
			public void onReceive(Context context, Intent intent) {
				killprocess();
				//停止更新widgets
				stopupdate();
			}
		}
	b.在Oncreate方法中注册广播接受者
		//注册锁屏的广播接受者
		screenOffReceiver = new ScreenOffReceiver();
		//设置过滤条件
		IntentFilter screenoffintentfilter = new IntentFilter();
		screenoffintentfilter.addAction(Intent.ACTION_SCREEN_OFF);
		//注册广播接受者
		registerReceiver(screenOffReceiver, screenoffintentfilter);
	c.在ondestory方法中注销广播接受者
		//注销锁屏的广播接受者
		if (screenOffReceiver != null) {
			unregisterReceiver(screenOffReceiver);
			screenOffReceiver = null;
		}
	d.在广播接受者的onreceive方法执行操作
		@Override
		public void onReceive(Context context, Intent intent) {
			killprocess();
			//停止更新widgets
			stopupdate();
		}
3.解锁开启更新的操作
	
	a.在服务中创建一个广播接受者
		private class ScreenOnReceiver extends BroadcastReceiver{

			@Override
			public void onReceive(Context context, Intent intent) {
				updatesWidgets();
			}
		}
	b.在Oncreate方法中注册广播接受者
		//注册解锁的广播接受者
		screenOnReceiver = new ScreenOnReceiver();
		//设置过滤条件
		IntentFilter screenonintentfilter = new IntentFilter();
		screenonintentfilter.addAction(Intent.ACTION_SCREEN_ON);
		//注册广播接受者
		registerReceiver(screenOnReceiver, screenonintentfilter);
	c.在ondestory方法中注销广播接受者
		//注销解锁的广播接受者
		if (screenOnReceiver != null) {
			unregisterReceiver(screenOnReceiver);
			screenOnReceiver = null;
		}
	d.在广播接受者的onreceive方法执行操作
		@Override
		public void onReceive(Context context, Intent intent) {
			updatesWidgets();
		}

#widgets的bug的处理#
bug : 用户从设置中心关闭服务,造成widgets无法更新的问题
updatePeriodMillis 更新时间到了之后就会去调用onUpdate方法
处理方式:将开启服务的操作移植到onUpdate方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值