@EricJing
2017-07-07T00:54:30.000000Z
字数 2732
阅读 2344
Android
目前涉及到的省电软件:

所以我们其实需要的一台诺基亚

满足条件
1. 关屏
2. 未插接电源
3. 预计30分钟
系统会定期(30分钟)退出低电耗模式一会儿(30秒),好让应用完成其已推迟的 Activity。在此维护时段内,系统会运行所有待定同步、作业和闹铃并允许应用访问网络。

限制:
1. 暂停访问网络。
2. 系统将忽略 wake locks。
3. 标准 AlarmManager 闹铃(包括 setExact() 和 setWindow())推迟到下一维护时段。
4. 如果您需要设置在低电耗模式下触发的闹铃,请使用 setAndAllowWhileIdle() 或 setExactAndAllowWhileIdle()。
5. 一般情况下,使用 setAlarmClock() 设置的闹铃将继续触发 — 但系统会在这些闹铃触发之前不久退出低电耗模式。
6. 系统不执行 Wi-Fi 扫描。
7. 系统不允许运行同步适配器。
8. 系统不允许运行 JobScheduler。
当用户不触摸使用应用程序一段时间时,该应用程序处于App Standby状态,系统将把该App标志为空闲状态。除非触发以下任意条件,应用程序将退出App Standby状态:
1. 用户主动启动该App;
2. 该App当前有一个前台进程(或包含一个活动的前台服务,或被另一个activity或前台service使用);
3. App生成一个用户所能在锁屏或通知托盘看到的Notification, 而当用户设备插入电源时,系统将会释放App的待机状态,允许他们自由的连接网络及其执行未完成的工作和同步。如果设备空闲很长一段时间,系统将允许空闲App一天一次访问网络。
息屏后,黑域高度利用 Android 6.0 的休眠(App Standby)特性,强行停止恶意唤醒或者真的不再使用的应用。
点击返回
点击Home
无界面的唤醒,只要没有打开过,都将强制停止

进入休眠
dumpsys battery unplug
am set-inactive true
停止应用
am force-stop 包名
ActivityManagerService.forceStopPackage
稳定持有权限
adb shell app_process /system/bin --nice-name=别名 moe.shizuku.server.Server
点击返回退出应用,利用Xposed拦截系统Api阻止程序自动启动和后台运行
杀掉黑名单的进程
1. 拦截ActivityManagerService,包括创建新进程、清理任务、Activity启动、广播、开启服务、绑定服务
private void hookActivityManagerServiceStartProcessLocked(Class<?> activityManagerService) {String method = "startProcessLocked";XC_MethodHook hook = new ProcessHook();try {hookMethods(activityManagerService, method, "ProcessRecord", hook);} catch (LinkageError e) {//省略}}public static void forceStopPackage(Context context, String packageName) {try {ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);activityManager.forceStopPackage(packageName);AlarmManagerServiceUtils.releaseAlarm(context, packageName);} catch (Throwable t) { // NOSONARPreventLog.e("cannot force stop package" + packageName, t);}}
利用禁用特性,告诉系统这个应用不存在
http://blog.csdn.net/commonslok/article/details/8150018
禁用应用:
pm disable PACKAGE_OR_COMPONENT
恢复应用:
pm disable-user PACKAGE_OR_COMPONENT
pm enable PACKAGE_OR_COMPONENT
黑屏后统一处理
非Root版:
1. 模拟用户强行停止应用
2. 把整个设备放入 Doze 模式
dumpsys battery unplug
dumpsys deviceidle step
ROOT版本:
1. 休眠
2. Xposed 模式,保留通知消息,唤醒追踪与路径切断,
Xposed目前不支持7.0以及以上,并且存在适配问题
https://forum.xda-developers.com/android/apps-games/closed-beta-test-incoming-companion-app-t3366295
island 对其控制范围内的应用执行冻结不需要 root (因为 island 是 Android for work 的 supervisor 应用),杀进程可能也不需要。