其实,我们无法做到真正意义上的保活,应为系统进程会自动杀死占用过大内存的某个应用。
但我们还有一种选择,就是过滤该应用的包名,做到后台任务键清理不掉它,单独去除不掉它,只有返回键才能做到真正的退出。
主要涉及到framework下的三个类:
/frameworks/base/services/core/java/com/android/server/am/ActiveServices.java
/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
/frameworks/base/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
1.
if (component.getPackageName().equals("com.tom.talkie")) continue;
if (app.processName.equals("com.tom.talkie")) return;
2.
if (packageName.equals("com.tom.talkie")) return;
3.
if (task != null && task.getBaseIntent().getComponent().getPackageName().equals("com.tom.talkie"))
return false;
ComponentName component = task.getBaseIntent().getComponent();
if (component.getPackageName().equals("com.tom.talkie")) {
return;
}
if (component == null || component.getPackageName().equals("com.tom.talkie")) {
return;
}
换成其他应用包名也可,亲测有效!!!!值得收藏!!!!