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