android oreo 终于可以管理后台了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
athanos

android oreo 终于可以管理后台了

  •  
  •   athanos Aug 22, 2017 20688 views
    This topic created in 3170 days ago, the information mentioned may be changed or developed.
    在电池里终于可以为每个程序设置后台权限。实测微信留的三个活动后台都被系统干掉了。
    33 replies    2017-08-25 20:37:28 +08:00
    EricCartman
        1
    EricCartman  
       Aug 22, 2017
    之前也有,不过隐藏了
    cybermonster
        2
    cybermonster  
       Aug 22, 2017   9
    到时候会出现不让你管理,否则不给用微信的情况
    cloverfisher
        3
    cloverfisher  
       Aug 22, 2017   1
    一直都有吧,只是很多程序你禁了一个权限,程序就不让你打开了。
    honeycomb
        4
    honeycomb  
       Aug 22, 2017 via Android
    @cybermonster 这件事不会发生,因为微信找不到此相关的信息,具体看源代码。

    @cloverfisher 这个机制从 7.0 才有,但那个时候的入口只有一个 appops 项目,并且具体实现有一处低级 bug,直到 8.0 dp4 才改正
    ZeoKarl
        5
    ZeoKarl  
       Aug 22, 2017
    TX:亲爱的用户你好,我是你爹
    leekafai
        6
    leekafai  
       Aug 22, 2017 via Android
    可是,作为一个通讯软件,驻后台有啥问题
    cunkouwdy007
        7
    cunkouwdy007  
       Aug 22, 2017
    只是刚更新系统还没跟上
    估计过段时间更新版本之后就修复不能后台的 BUG 了
    cloverfisher
        8
    cloverfisher  
       Aug 22, 2017
    @honeycomb 抱歉,我说的一直都有其实就指的 7.0.。用词不当^_^。其实有没有差不多,反正你关了某些服务,要么是死活不让你打开,要么是每次打开都要弹窗。
    chinvo
        9
    chinvo  
       Aug 22, 2017
    @leekafai #6 别家 IM 也没见驻后台的啊,都是走系统的推送
    leekafai
        10
    leekafai  
       Aug 22, 2017 via Android
    @chinvo play 里的微信用的 gcm 啊
    silencefent
        11
    silencefent  
       Aug 22, 2017
    安卓难道 8.0 了还不能控制下载吗
    备机打开一些应用,点到一些误触的位置,不能控制下载这么多年了,还得靠第三方来解决,国外的环境就那么纯洁,没有诱导误触的 app?
    daozhihun
        12
    daozhihun  
       Aug 22, 2017
    @leekafai 有 GCM 模块但没用。我的手机支持 GCM,很多推送也走的 GCM,但是微信关掉进程后就收不到了。
    athanos
        13
    athanos  
    OP
       Aug 22, 2017 via Android
    @daozhihun 似乎要 play 上下载的版本?总之在 oreo 里控制了后台之后还是收得到消息。
    920678778
        14
    920678778  
       Aug 22, 2017
    @chinvo 关键是 GCM 在国内不灵啊!!!
    chinvo
        15
    chinvo  
       Aug 22, 2017
    @athanos 所以明明有 GCM 为啥非要再常驻一个
    mario85
        16
    mario85  
       Aug 22, 2017 via Android
    @leekafai 据说微信的 gcm 是为了拉起应用而不是推送。恶心之处可见一斑。
    EricCartman
        17
    EricCartman  
       Aug 22, 2017 via Android
    @silencefent 对,广告都是导向 Googleplay 的
    chinawrj
        18
    chinawrj  
       Aug 22, 2017
    @leekafai lz 只是想要禁用后台,并不是质疑微信后台的合理性。
    ysc3839
        19
    ysc3839  
       Aug 22, 2017 via Android
    @920678778 我这里是可以直连 GCM 的
    czmecho
        20
    czmecho  
       Aug 22, 2017 via iPhone
    推送问题解决了大半,不过滥用权限问题还是没解决。
    chnyang
        21
    chnyang  
       Aug 22, 2017 via Android
    @czmecho
    @ysc3839
    @chinawrj
    @chinvo
    @EricCartman
    @daozhihun

    楼上的这么多位,我想问问你们关后台只靠推送,那冷启动微信不会很慢吗?不懂求问
    athanos
        22
    athanos  
    OP
       Aug 22, 2017 via Android
    @chnyang 禁用了之后仍然收得到消息,而且并没有清除出内存,cache 里还有。 @honeycomb 看过源码,应该知道到底是怎么一回事。
    ysc3839
        23
    ysc3839  
       Aug 23, 2017
    @chnyang 我之前用 LineageOS 的时候并没有关掉微信的后台,怕错过什么通知。不过微信启动确实很慢,点了图标后卡至少 2 秒才出现界面,有时候会显示地球界面,又要等 5 秒。其他应用都没有这种状况,QQ 点图标都是秒开,企鹅界面也没出现过超过 3 秒的情况……
    honeycomb
        24
    honeycomb  
       Aug 23, 2017   1
    @athanos
    我也发现有这个问题

    微信在 7.1.2 里被杀得很爽快,但在 8.0.0 似乎不会被杀掉 service

    oasisfeng 提出的 issue report:
    https://issuetracker.google.com/issues/62480012

    实际对应的问题早在 16 年 11 月就提交了,但 Google 无视了它
    https://issuetracker.google.com/issues/37126419


    修复的版本
    stopInBackgroundLocked(int uid)

    确实按照 37126419 的建议,把 stopping.add(service)移到 if 语句之外

    https://android.googlesource.com/platform/frameworks/base/+/android-8.0.0_r4/services/core/java/com/android/server/am/ActiveServices.java
    honeycomb
        25
    honeycomb  
       Aug 23, 2017   1
    但确实可以在 8.0.0 看到系统杀死微信的 service 的报告

    I/ActivityManager(1031): Process com.tencent.mm:tools (pid 7111) has died: fore RCVR
    W/ActivityManager(1031): Stopping service due to app idle: u0a128 -1m32s154ms com.tencent.mm/.booter.CoreService
    W/ActivityManager(1031): Stopping service due to app idle: u0a128 -1m20s538ms com.tencent.mm/.booter.NotifyReceiver$NotifyService


    看上去这一套配合绿色守护的浅睡有一定效果,GCM 有的时候能把微信拉起来
    EricCartman
        26
    EricCartman  
       Aug 23, 2017
    @czmecho #20 appops 可以解决
    skylancer
        27
    skylancer  
       Aug 23, 2017
    @daozhihun 关掉进程当然收不到,因为
    1. 请看 GCM 实现
    2. 微信并不是(用)高优先级
    zhxhwyzh14
        28
    zhxhwyzh14  
       Aug 23, 2017 via Android
    电池里怎么设置的后台权限呀?
    dong3580
        29
    dong3580  
       Aug 23, 2017 via Android
    微信好像不给 GPS 不让用,有意思,
    honeycomb
        30
    honeycomb  
       Aug 23, 2017 via Android
    @dong3580 用 appops 治它
    xingda920813
        31
    xingda920813  
       Aug 23, 2017
    @cybermonster
    @honeycomb
    [到时候会出现不让你管理,否则不给用微信的情况]
    -----------------------------------------------------
    App 可以检测到 op RUN_IN_BACKGROUND 是否被 ignore / deny.

    final int OP_RUN_IN_BACKGROUND = 63;
    int mode = (int) AppOpsManager.class
    .getMethod("checkOp",
    int.class,
    int.class,
    String.class)
    .invoke(getSystemService(AppOpsManager.class),
    OP_RUN_IN_BACKGROUND,
    Binder.getCallingUid(),
    getPackageName());
    System.out.println(mode);

    targetSdkVersion 23 的 Legacy 应用, 上面的代码安装上时返回 0 (MODE_ALLOWED), adb 设为 ignore 后返回 1 (MODE_IGNORED), 设为 deny 后抛出 java.lang.SecurityException: com.company.test from uid 10172 not allowed to perform RUN_IN_BACKGROUND.
    EmmaSwan
        32
    EmmaSwan  
       Aug 24, 2017
    谷歌还是对流氓软件太仁慈了。不给权限不让用的,直接全球 PLAY 下架,让它永远呆在天朝就好了
    honeycomb
        33
    honeycomb  
       Aug 25, 2017
    @xingda920813
    是的
    如果出现那种情况就卸载吧
    About     Help     Advertise     Blog     API     FAQ     Solana     4176 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 77ms UTC 05:25 PVG 13:25 LAX 22:25 JFK 01:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86