V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rizon
V2EX  ›  程序员

安卓的后台机制实在无法理解! emui10 如何关闭自启动的同时又可以自动管理后台?

  •  
  •   rizon ·
    othorizon · 2019-11-14 11:14:02 +08:00 · 8646 次点击
    这是一个创建于 1842 天前的主题,其中的信息可能已经有所发展或是发生改变。

    华为 的 emui10 中,

    应用的允许后台运行 可以设置为手动模式启动,这样 app 在切换到后台时锁屏后就不会被杀掉,但是带来的问题是 app 退出依然在后台运行而不是被关闭。
    如果设置为自动管理,在切换后台不会被杀掉,在退出后会被自动关闭,很完美,可问题是自动模式还包括了自启动和关联启动,这样的问题就是,有些 app 会偷偷的就自己运行起来了。。。

    所以有没有办法只自动管理后台运行而手动关闭自启动和关联启动??

    关于切换到后台被关闭应该是 emui10 的电池优化和锁屏清理导致的,可问题是 emui10 没有锁屏清理设置了。。 不知道该怎么办了


    最近苹果转华为,安卓的后台机制实在无法理解。app 不应该在切换到后台后不会被关闭,在退出后就真的退出吗?? 怎么搞这么复杂,,还有什么自启动关联启动,,混乱的一 B。。。。 费劲啊。 真心觉得安卓有些机制真的就有问题,整个系统的开放程度,对“人心”的无条件信任简直儿戏。。。
    唉,可是苹果系统越来越难用,而且安卓的有些本地化的功能实在有诱惑。。。

    29 条回复    2019-11-18 11:18:25 +08:00
    cpdyj0
        1
    cpdyj0  
       2019-11-14 11:18:37 +08:00 via Android
    Android 在设计时的确太开放了,有 Google play 还好说
    cpdyj0
        2
    cpdyj0  
       2019-11-14 11:20:15 +08:00 via Android
    不能说关闭就彻底关闭啊,如果一个 app 要访问另一个 app 的资源怎么办,如果一个 app 需要在某些时候自启处理某些事物怎么办……很多事情苹果那边是根本干不了,Android 这边就尴尬了
    WebKit
        3
    WebKit  
       2019-11-14 11:23:29 +08:00 via Android
    你把它理解为电脑上的程序,很多时候程序关闭了,但是后台服务还在运行。
    你觉得复杂其实是你没有理解这个。当然作为用户其实你不需要关心这些。现在的 Android 也不需要去手动杀后台了。
    imn1
        4
    imn1  
       2019-11-14 11:26:52 +08:00
    emui 以前有个关联启动管理的,现在没了?好久没用菊厂机
    zzNucker
        5
    zzNucker  
       2019-11-14 11:27:24 +08:00
    你没必要关心后台的。。。。 现在早就不是以前了,国产系统自启动管理还是不错的。
    z1154505909
        6
    z1154505909  
       2019-11-14 11:35:01 +08:00
    我只服悦跑圈,我只能用电池管理才能把它干掉,其他的方法对他完全无效,然后这玩意后台还贼耗电.
    rizon
        7
    rizon  
    OP
       2019-11-14 11:38:00 +08:00
    @WebKit #3
    @zzNucker #5
    所以意识是我默认开启自动管理就好了?就算某个 app 被自启动了什么的也不用太在意是吗?

    我不做安卓开发不了解,但是看到一些安卓开发的帖子里,是想尽了办法让自己不被杀掉,,唉。
    imn1
        8
    imn1  
       2019-11-14 11:39:14 +08:00
    主要的问题是,自动管理应该不是 android 原生的,是厂商增加方便懒人不用逐个 app 手设权限
    用自动管理就要理解厂商的逻辑了

    理论上 android app 只要赋予通知权限,可以关闭 /退出而调用 GMS
    但国内 GMS 不可用,所以国内大部分 app 设为关闭就转后台,自动管理一般针对这个杀掉
    rizon
        9
    rizon  
    OP
       2019-11-14 11:39:25 +08:00
    @WebKit #3
    @zzNucker #5
    我现在其实也这么想的,管也管不了,只能交给系统自己去管理了,用习惯了,不盯着看也就无所谓了。。。。。
    zzNucker
        10
    zzNucker  
       2019-11-14 12:02:42 +08:00
    @rizon 现在国产机逻辑都是你不用的过段时间就给你自己杀了,用的多了就晚点杀或者不杀。。。
    Laeoo
        11
    Laeoo  
       2019-11-14 13:26:39 +08:00   ❤️ 1
    这里分享一下冯大的一条微博
    https://weibo.com/1649495037/I1ajispIb
    Laeoo
        12
    Laeoo  
       2019-11-14 13:27:09 +08:00
    Laeoo
        13
    Laeoo  
       2019-11-14 13:27:37 +08:00
    @Laeoo
    关于 Android 多任务界面的划除交互,这里作一个统一答疑。(长文预警)

    Q:那应该如何杀死一个应用?
    A:应用是人类面对数字世界的可交互程序形成的一个想象实体,不同于可被生理终结的生物体,想象的实体只能被忘却。
    (正经回答:首先得明确要杀死的主体,到底是进程、上下文状态,还是背后的开发者?其次,杀只是手段,而不是真实需求,需要好好想想为什么要杀应用)

    Q:那么多任务界面划掉任务在 AOSP 上到底代表什么?
    A:多任务界面掌管的是「任务」这个维度。Android 中的任务是一个类似于真实世界中任务的抽象概念,它代表的是一组有导航先后关系的界面所处的上下文,与应用的进程和可运行状态都没有必然的对应关系。这么说很抽象,下面具体拆解来看。
    首先,一个任务可以包含来自多个应用的界面(比如从淘宝跳转到支付宝),所以划掉任务到底应该杀掉支付宝还是淘宝呢?或是通杀?
    其次,一个应用可以创建多个任务,比如文档编辑器可以分别从不同的任务中被别的应用打开,各自处于不同的上下文(编辑的文档)。划掉其中一个任务就要杀死文档编辑器么?
    最后,即便应用的进程因别的原因回收了(比如内存不足),任务所包含的应用界面上下文依然保留在内存中。再次切回到该任务时,会触发 Android 的界面上下文恢复机制,只要应用正确支持了这个机制,就可以回到之前离开时的精确上下文,看起来就像是应用从未被杀死过。这个恢复机制甚至可跨越设备重启。

    Q:我就是不想要应用在后台占内存耗电,要怎么做?
    A:Android 从 8.0 开始大幅度调整了应用的后台控制策略,具体技术细节这里就不展开说了。原则上,只要适配了 Android 8+ 的应用,就不能再持续在后台占据内存。去年已经推动国内的应用市场跟进了 Google Play 的应用适配强制要求,所以这方面就不必担心了。至于耗电,这是一个需要平衡的取舍,你如果的确需要某个应用的后台机制,那就得让它略微耗一点电(不能既要马儿跑得快,又让马儿不吃草吧)。如果你压根不需要它的后台机制,或者它的后台耗电太过分了,那么你可以在应用设置中限制应用的后台能力(非原生系统可能不一定有这个选项)。总之,你并不需要「杀应用」,也没必要为这些破事儿操碎心。当然,道与魔的较量总会间歇有漏洞被利用,所以绿色守护一直在试图补位 Android 本身的破缺,等待它可以全身而退的那一天。
    iwanttofly
        14
    iwanttofly  
       2019-11-14 13:45:07 +08:00
    我现在都不管了, 就交给系统就行. 日常使用基本没问题.
    zuoyuan333
        15
    zuoyuan333  
       2019-11-14 14:28:37 +08:00
    @z1154505909 在后台播放无声音的音乐是不是这货?
    wpblank
        16
    wpblank  
       2019-11-14 14:36:03 +08:00
    我原来索尼+黑域+设置几个白名单,其实能完美符合你的要求,按后台就后台,退出就真的退出。
    aalikes95
        17
    aalikes95  
       2019-11-14 14:36:04 +08:00
    安卓就是这样子,没得办
    iVeego
        18
    iVeego  
       2019-11-14 14:46:31 +08:00 via Android
    adminsam
        19
    adminsam  
       2019-11-14 14:54:56 +08:00 via Android
    我觉得你应该是想说华为…各个厂商系统很多地方是完全不一样的,尤其后台管理机制,这个得问华为官方的人了
    daozhihun
        20
    daozhihun  
       2019-11-14 15:16:17 +08:00   ❤️ 1
    你说的这个只是国产 ROM 自己搞的东西,原生安卓并没有什么自启动、划掉就关闭什么的概念。
    AOSP 是你把后台页面划掉之后只是把 UI 给关掉(也就是系统不会保存你浏览页面的状态,下次切换不会恢复),而与后台 service、推送什么的无关。不过,你也可以在设置里关掉某些 app 的后台能力。
    对于国产 ROM 来说,由于你懂的原因,所以很多设置成了划掉以后把后台的东西全部杀掉了(这个不是谷歌的本意)。并且如果你设置成自动管理的话,无论你还有多少 RAM,除了少数厂商预先设置的 app (比如微信等),其他的后台都会杀的干干静静。
    我的某为机器也是这样,不管怎么设置,后台老是被杀掉,很烦~
    JackyKeke
        21
    JackyKeke  
       2019-11-14 15:21:51 +08:00 via Android
    那可是 emni 的事…不关安卓
    juded
        22
    juded  
       2019-11-14 15:58:33 +08:00 via Android
    一般来讲国产 ROM 启动模式下会有明细选项,比如手动模式下可能还分允许自启动 允许后台 等等。你可以设置明细项。
    另外你的描述似乎有问题,一般自动模式下启动限制严格,并不会出现相互唤醒的现象,手动才会。保持自动模式就可以满足你的要求了。
    不知是不是汉化的原因,安卓上有些设置描述容易产生误解。比如忽略电池优化下,允许是不优化,不允许是优化。
    hfc
        23
    hfc  
       2019-11-14 18:49:26 +08:00
    手机管家--应用启动管理,然后在这个页面切换“自动管理”和“手动管理”的时候,会有一个弹框,里面就分别是“允许自启动”、“允许关联启动”和“允许后台活动”的三个开关了。
    HangoX
        24
    HangoX  
       2019-11-14 19:19:40 +08:00
    @z1154505909 因为它后台是播放无声音乐维持启动的。系统不杀音乐播放的东西
    HangoX
        25
    HangoX  
       2019-11-14 19:20:29 +08:00
    我觉得楼主不用太在意了,国产机现在基本都是杀杀杀的,自动启动之后一会又没了。除非挂通知栏
    lisachensyd
        26
    lisachensyd  
       2019-11-14 19:49:32 +08:00
    @HangoX 这大概就是为啥有些毒瘤 app 一直常驻通知栏“正在运行中”还划不掉,太烦了
    cst4you
        27
    cst4you  
       2019-11-14 22:24:41 +08:00
    别瞎说 EMUI != Android
    说错了要负责任的
    Bwoywan
        28
    Bwoywan  
       2019-11-14 22:28:15 +08:00
    我 3gb 内存的手机日常都不太担心后台保活的问题,(当然后台不能挂太多应用,满了就杀后台了),从 MIUI Flyme 到原生,我觉得这是国产 ROM 魔改,替用户做主留下来的病。
    z1154505909
        29
    z1154505909  
       2019-11-18 11:18:25 +08:00
    @zuoyuan333
    @HangoX 经过你们这么一提醒我大概是懂了,这操作是真恶心啊,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2407 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:00 · PVG 09:00 · LAX 17:00 · JFK 20:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.