Android实现一键加速需要获取本机的ActivityManager.RunningAppProcessInfo,通过遍历这些RunningAppProcessInfo的importance并与API提供的特定等级比较,选出等级高的部分获取包名,即可关闭掉进程。代码如下:
首先要获取权限
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
package com.jikexueyuan.onekeyspeedup;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Intent;
import android.widget.Toast;
import java.util.List;
public class MainActivity extends Activity {
private ActivityManager activityManager;
@Override
protected void onResume() {
super.onResume();
activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppInfo = activityManager.getRunningAppProcesses();
long beforeMem = getAvailMemory();
if (runningAppInfo != null) {
for (ActivityManager.RunningAppProcessInfo runningApp : runningAppInfo) {
if (runningApp.importance > ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
String[] pkgList = runningApp.pkgList;
for (String pkg : pkgList) {
activityManager.killBackgroundProcesses(pkg);
}
}
}
}
long afterMem = getAvailMemory();
Toast.makeText(MainActivity.this, "为您节省了" + (afterMem - beforeMem) + "M内存", Toast.LENGTH_SHORT).show();
//返回桌面 可不写
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
//获取当前可用内存
private long getAvailMemory() {
activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
return memoryInfo.availMem / (1024 * 1024);
}
}