noactive墓碑v2.6 | 冻结后台应用[xposed模块] | 芊芊精典-m6米乐app登录

安卓应用415.7k
摘要

noactive(包名:cn.myflv.noactive)是myflavor开发的一款xp模块,noactive正如其名,让android后台cpu不再活跃。

软件介绍

noactive(包名:cn.myflv.noactive)是myflavor开发的一款xp模块,noactive正如其名,让android后台cpu不再活跃。noactive可以达到类似ios的墓碑后台机制。ios的墓碑后台机制是指,当你使用一个程序时,这个时候你直接滑出去并没有关掉,这时系统会将它冻结,所谓冻结就是把它保留在ram(运存)中但是断开了它与处理器的联系,不让它执行任何操作。

功能说明

作用域说明:

系统框架:
1、hook应用切换事件,冻结切换至后台的应用,解冻切换至前台的应用
2、hook广播分发事件,屏蔽被冻结的应用接收广播,从而避免触发广播anr
3、hook计算oom_adj事件,修改后台应用的oom_adj,白名单主进程500子进程700,冻结名单主进程700 子进程900
4、hook系统anr事件,由于冻结之后,应用无法做出响应被系统认为是anr,所以需要屏蔽anr避免系统误杀被冻结的app
5、hook系统是否开启暂停执行已缓存变量获取,由于系统自带的暂停执行已缓存在收到广播后可能解冻再次活跃

电量和性能(miui):
1、hook清理app事件,将该方法置空解决锁屏或夜间杀后台
2、禁用millet,该功能与noactive重复

冻结方式说明:
目前linux进程冻结方式有kill -19、kill -20、cgroup freezer v1、cgroup freezer v2
kill -19和kill -20兼容性最好,但是存在bug,进程还在依然重载
google官方使用cgroup freezer v2
noactive仅仅作用于系统框架,不是root权限,权限不足
kill使用android的process.sendsignal,该方法为安卓封装间接调用kill,所以可能存在部分系统19有效或者20有效,需要自测
cgroup freezer v1和v2采用noactive参考millet自行实现并封装,或v2调用安卓process.setprocessfrozen实现
所以noactive支持5种冻结方式分别为kill -19、kill -20、cgroup freezer v1(noactive)、cgroup freezer v2(noactive)、cgroup freezer v2(系统api)
由于对system权限不足导致无法读取配置判断cgroup freezer版本,故hook获取系统是否支持暂停执行已缓存来判断v2、其余皆为v1,如果测试没有效果,或者冻结error报错,请选择kill方式,配置方式参考下面的配置文件说明。

配置文件说明:
目录 /data/system/noactive
即时生效配置:
blacksystemapp.conf 系统黑名单(系统app默认白名单)
killprocess.conf 杀死进程名单(后台3s杀死进程)
whiteapp.conf 白名单app(用户app默认黑名单)
whiteprocess.conf 白名单进程(添加白名单app无需添加)

重启生效配置:
debug 开启调试日志
disable.oom 禁用修改oom_adj功能
kill.19 使用kill -19冻结
kill.20 使用kill -20冻结
freezer.v1 使用cgroup freezer v1(noactive)冻结
freezer.v2 使用cgroup freezer v2(noactive)冻结
freezer.api 使用cgroup freezer api(系统api)冻结
color.os coloros专属配置(特殊oom_adj方式)

日志说明:
日志级别分为debug(调试信息)、info(基本信息)、warn(警告信息)、error(错误信息)

软件截图

noactive墓碑v2.6 | 冻结后台应用[xposed模块]

更新说明

v2.6
1.优化功耗
2.修复唤醒锁

芊芊精典-myqqjd.com
评论  4  访客  4
  1. 519851630

  2. caokun0126

    谢谢分享

  3. 925950512

    感谢分享

  4. 老九

    试试

发表评论