码迷,mamicode.com
首页 > 系统相关 > 详细

80锁屏清理进程(重点)

时间:2014-12-25 20:35:21      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:锁屏清理进程

锁屏清理进程是一个比较有用的功能,可以为用户节省很多的电量,锁屏清理进程也比定时清理进程优点多。说下思路:

判断用户是否锁屏需要注册一个广播接收者去监听,当然这个广播接收者放在服务里面比较好,试想如果放在Activity里面,当Activity执行onDestory()的时候,广播接收者就没了。而且这个广播接受者必须是代码注册。

package com.ustc.mobilemanager.service;

import java.util.List;

import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.util.Log;

public class AutoCleanService extends Service {
	public static final String TAG = "AutoCleanService";
	
	private ScreenOffReceiver receiver;
	
	private ActivityManager am;

	@Override
	public void onCreate() {
		
		am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
		
		receiver = new ScreenOffReceiver();
		
		IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
		
		registerReceiver(receiver, filter);
		super.onCreate();
	}

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	@Override
	public void onDestroy() {
		unregisterReceiver(receiver);
		receiver = null;
		super.onDestroy();
	}
	
	private class ScreenOffReceiver extends BroadcastReceiver{
		@Override
		public void onReceive(Context context, Intent intent) {
			Log.i(TAG, "屏幕锁屏啦!");
			List<RunningAppProcessInfo> infos = am.getRunningAppProcesses();
			for (RunningAppProcessInfo info : infos) {
				am.killBackgroundProcesses(info.processName);
			}
		}
		
	}

}

CheckBox的点击事件:

cb_auto_clean.setOnCheckedChangeListener(new OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(CompoundButton buttonView,
					boolean isChecked) {

				// 锁屏的广播事件是一个特殊的广播事件,在清单文件配置广播接受者是不会生效的
				// 锁屏的广播接受者必须在代码中注册(写在服务里)
				Intent intent = new Intent(TaskSettingActivity.this,
						AutoCleanService.class);
				if (isChecked) {
					startService(intent);
				} else {
					stopService(intent);
				}

			}
		});

CheckBox的状态与服务的生存期有关:

@Override
	protected void onStart() {

		boolean running = ServiceUtils.isServiceRunning(this,
				"com.ustc.mobilemanager.service.AutoCleanService");

		cb_auto_clean.setChecked(running);

		super.onStart();
	}


80锁屏清理进程(重点)

标签:锁屏清理进程

原文地址:http://blog.csdn.net/chenfuduo_loveit/article/details/42150629

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!