//在Activity里使用:
//我的这个是指定了一个包名,除了这个包名的应用,其他全部清理
private void CleaningOperation() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> infoList = am.getRunningAppProcesses();
List<ActivityManager.RunningServiceInfo> serviceInfos = am.getRunningServices(100);
// Log.d("TAGDD1", "-----------before memory info : " +this.getAvailMemory(getApplicationContext()));
int count = 0;
if (infoList != null) {
for (int i = 0; i < infoList.size(); ++i) {
ActivityManager.RunningAppProcessInfo appProcessInfo = infoList.get(i);
Log.e("TAGDD1", "process name : ----------" + appProcessInfo.processName);
//importance 该进程的重要程度 分为几个级别,数值越低就越重要。
Log.e("TAGDD2", "importance : -----------" + appProcessInfo.importance);
// 一般数值大于RunningAppProcessInfo.IMPORTANCE_SERVICE的进程都长时间没用或者空进程了
// 一般数值大于RunningAppProcessInfo.IMPORTANCE_VISIBLE的进程都是非可见进程,也就是在后台运行着
// if (appProcessInfo.importance > 100) {
// String[] pkgList = appProcessInfo.pkgList;
// for (int j = 0; j < pkgList.length; ++j) {//pkgList 得到该进程下运行的包名
// Log.e("TAGDD4", "It will be killed, package name : " + pkgList[j]);
// am.killBackgroundProcesses(pkgList[j]);
// count++;
// }
// }
//只要不是com.example.hasee.a1011ceshi这个包名的进程,其余进程全部禁止
if(!appProcessInfo.processName.equals("com.example.hasee.a1011ceshi")) {
String[] pkgList = appProcessInfo.pkgList;
for (int j = 0; j < pkgList.length; ++j) {//pkgList 得到该进程下运行的包名
Log.e("TAGDD3", "It will be killed, package name : ----------" + pkgList[j]);
am.killBackgroundProcesses(pkgList[j]);
count++;
Log.e("TAGDD4", "count : ----------" + count+"");
}
}
}
}
}
//权限:
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
2:
private void clearMemory() { ActivityManager am = (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> infoList = am.getRunningAppProcesses(); int count = 0; if (infoList != null) { for (int i = 0; i < infoList.size(); ++i) { ActivityManager.RunningAppProcessInfo appProcessInfo = infoList.get(i); // Log.i(getClass().getSimpleName(), "process name : ----------" + appProcessInfo.processName); //importance 该进程的重要程度 分为几个级别,数值越低就越重要。 // Log.i(getClass().getSimpleName(), "importance : -----------" + appProcessInfo.importance); //只要不是com.tq.recorder这个包名的全部进程给禁止了 if (!appProcessInfo.processName.equals("com.tq.recorder")) { String[] pkgList = appProcessInfo.pkgList; for (int j = 0; j < pkgList.length; ++j) {//pkgList 得到该进程下运行的包名 Log.e(getClass().getSimpleName(), "It will be killed, package name : ----------" + pkgList[j]); am.killBackgroundProcesses(pkgList[j]); count++; Log.e(getClass().getSimpleName(), "count : ----------" + count + ""); } } } } //获取运行内存大小 ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); am.getMemoryInfo(mi); long availMem = mi.availMem; long ava = availMem / 1024 / 1024; //开始清理后台运行内存,并显示到文本上 mCleanMemory.setText("可用内存 " + (ava >= 1024 ? (String.format("%.2f", (float) ava / 1024) + "G") : (ava + "M")));//mCleanMemory TextView框显示当前运行内存 Toast.makeText(getContext(), "清理完毕,当前可用运行内存:" + mCleanMemory.getText().subSequence(4, mCleanMemory.getText().length()), Toast.LENGTH_SHORT).show(); }
//——————————————————————完——————————————————————————
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118312.html