彩蛋:反保活的终结者Android 中的进程查杀最强武器是force-stop,本质上它会通过遍历并杀死所有和应用有关的Java进程:
private final boolean killPackageProcessesLocked(String packageName, int appId, int userId, int minOomAdj, boolean callerWillRestart, boolean allowRestart, boolean doit, boolean evenPersistent, String reason) { ArrayList<ProcessRecord> procs = new ArrayList<>(); final int NP = mProcessNames.getMap().size(); for (int ip=0; ip<NP; ip++) { SparseArray<ProcessRecord> apps = mProcessNames.getMap().valueAt(ip); final int NA = apps.size(); for (int ia=0; ia<NA; ia++) { ProcessRecord app = apps.valueAt(ia); ... // continue if the process do not need to kill app.removed = true; procs.add(app); } } int N = procs.size(); // force-stop 的本质是通过遍历所有与应用有关的进程,依次查杀来实现杀死所有进程的 for (int i=0; i<N; i++) { removeProcessLocked(procs.get(i), callerWillRestart, allowRestart, reason); } updateOomAdjLocked(); return N > 0;}想要做反保活的话,我们只需要在 removeProcessLocked 的遍历之前,将 java 进程和在其同一cgroup的c进程一起通过发送信号hang住,再通过循环依次杀死所有进程,这种方法基本能杜绝所有拉活方案 。总结进程管理与大家日常开发息息相关,也是在Android系统中是个举足轻重的模块 。相信通过本系列的两篇文章,大家已经对进程启动期间涉及到fork、对进程的优先级管理涉及到adj、对进程的调度这些概念已经有了更加深入的理解了 。
【Android进程管理:Framework层概念】
推荐阅读
- 昆仑雪菊播种后的管理,雪菊的价格多少
- 一款比phpmyadmin更好用的WEB数据库管理工具
- Android中的三个蓝牙漏洞
- 交换机和路由器的文件管理配置,可以修改设备flash文件
- 安卓|谷歌确认!Android 13最大改进 解决杀后台:CPU/内存使用率暴降
- 项目管理 之“关键路径法 和 关键链法的区别”
- 阿里工程师用 8 张图告诉你如何存储、管理泛内容数据
- 会计学属于什么类别的专业?
- Q Android 10/11(R) 分区存储适配
- 使用微软的 ProcDump 调试 Linux 进程
