为了省电,为了禁止 app 在后台活动,传统方法似乎是将 app 完全关闭,清出内存,包括绿色守护、黑域、冰箱等都是这样吧? 这样虽然可以达到目的,但下次启动的时候就慢了,有没有办法禁止 app 任何后台活动但又将 app 保留在内存中呢? 前提是内存够大。
为了省电,为了禁止 app 在后台活动,传统方法似乎是将 app 完全关闭,清出内存,包括绿色守护、黑域、冰箱等都是这样吧? 这样虽然可以达到目的,但下次启动的时候就慢了,有没有办法禁止 app 任何后台活动但又将 app 保留在内存中呢? 前提是内存够大。
|
1
绿色守护,浅度休眠
|
|
shihiraMar 13, 2018
2
kill -SIGSTOP <pid>
|
|
creedowlMar 13, 2018
3
xposed 应用 应用控制器,设置后台墓碑
|
|
WickedMar 13, 2018 via iPhone
4
iOS 好像就是这样?
|
|
esbackupMar 13, 2018 via Android
5
Xposed 模块 Per App Hacking
|
|
huclengyueMar 13, 2018 via Android
6
Android6.0 以上的浅度睡眠
|
|
7
Android8 (实际上是 7 )新加入的后台限制就是干这个的。
5/6 时候就有的 doze 也是干这个的。 |
|
iwtbauhMar 13, 2018 via Android
8
我认为没有必要
因为底层 Linux 内核会进行缓存。App 的字节码和数据启动一次后就会保存在高速缓存中,第二次打开就会直接从内存中使用。 反而使用上面说的“浅度休眠”之类方法,App 仍然会在收到 fcm 推送时被唤醒继续运行,而且在充电时也会保持唤醒 |
|
9
黑域调成只休眠,应该就可以了。就是激进的浅度休眠
|
|
fengleidongxiMar 13, 2018
10
安卓 6 以后系统自带
|
|
11
@iwtbauh 希望的是应用在不使用且无需杀进程时以“已缓存进程”的形式在内存里。
而 oreo 的后台限制的作用和这个目的最接近:它会停掉不需要运行的 service 并防止它重新启动,阻止 alarm 等。如此,一个应用的进程里就不会有 service,那么它就比较可能处于“已缓存进程”的状态 |
|
iwtbauhMar 14, 2018 via Android
12
@honeycomb 但是楼主说的是”禁止 app 任何后台活动“,是任何后台活动,据我所知这些限制不会在充电时有效,也不会禁止 fcm 推送
|
|
15
|
|
17
@iwtbauh
上述 7/8 加入的后台限制( AppOps.RUN_IN_BACKGROUND),用以限制应用进程处于 idle (和它相关的部分没有显示了一段时间,大约一分钟)时,阻止该应用的后台 service 的运行或再次启动。它不受是否处于充电状态的影响。 受充电影响的限制是 doze 与 app standby,其它相关的有:job 可以设定为充电时触发,处于后台白名单,临时白名单时不受(或减少受到) doze/app standby 的影响 接受 gcm 的 play service 在白名单中,所以 doze 是 gcm 也能收到,其中的高优先信息也能拉起其它因为 doze/app standby/RUN_IN_BACKGROUND 应用 |
|
18
@gdtv
miui 的内地版本在编译时就通过一个编译选项禁用了 doze 机制,app standby 机制应该也同时被这个选项所禁用了。 |
|
iwtbauhMar 14, 2018 via Android
19
|
|
iwtbauhMar 14, 2018 via Android
20
@iwtbauh 手抖,接上文
RUN_IN_BACKGROUND 使 manifest 中的广播失效,也就是说**不能**禁止显式注册的广播,也就是说仍然可能会出现后台活动 RUN_IN_BACKGROUND 禁止后台服务,但如果 app 霸占任务栏把服务固定到前台就是无效的。例如 QQ 因此我仍然认为要想达到完全禁止后台运行,必须完全停止 App。 |
|
honeycombMar 14, 2018 via Android
21
@iwtbauh
回复被 v2 吞了。 重写一个简单版本: Google 认为前台服务不是后台运行。 这个 op 在多数情况(当然不包括 qq 那种滥用前台服务的)下的效益已经超过了强杀进程? 广播的问题可用 ifw 解决,greenify 以 prescription 的形式做了一个可订阅规则的 wrapper |
|
honeycombMar 14, 2018 via Android
22
@iwtbauh 当然 Android 仅是强迫使用前台服务的应用显示通知,但不采取实际措施让用户拥有限制它的能力的做法也备受批评。
|
|
huclengyueMar 14, 2018 via Android
23
@gdtv 有的。。不过 MIUI 有一套自己的应用管理流程,所以后台的大多数都给直接杀死了,你可以关了系统的用绿色守护的来替代
|
|
24
@huclengyue miui 自己可以将 app 杀死,注意是杀死,清出内存,我想要的是保留在内存中,所以 miui 自带的管理功能不适合我,现在正在试用绿色守护。
|
|
huclengyueMar 14, 2018 via Android
26
@gdtv 对啊。我就是让你关了系统的用绿色守护啊。。。
|
|
27
@honeycomb
小米的 appops implementation 有问题,重启后设置会丟 ------------------------------------------------ 对的,我也发现这个问题了,用任何 appops 类的软件都无效 |
|
abaiMar 15, 2018
28
然而越来越多的 app 加了开屏广告,启动再快也是白扯,像淘宝这种切换一下都要给你看个广告的就更不用说了
|
|
29
@guoluwei 正是因为 app 有开屏广告,才更需要将 app 休眠在内存中,在内存中的 app 会保留当前状态,再打开的时候就是先前的状态,不会出现开屏广告。
|