V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
bluesky139
V2EX  ›  全球工单系统

B 站 Android 端放后台会持续占用 CPU

  •  
  •   bluesky139 · 2019-03-07 09:21:21 +08:00 · 4092 次点击
    这是一个创建于 2113 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如图,在用一段时间的客户端后放后台(并不是放后台继续播放,就是不用了正常按 Home 键出去),使用 top 命令查看,始终有 10% 左右的 CPU 占用,会一直持续下去。

    现在的系统是 AOSP 8.1.

    22 条回复    2019-03-10 15:50:32 +08:00
    hongch
        1
    hongch  
       2019-03-07 09:24:48 +08:00
    因为有 service 这种东西的存在
    deadEgg
        2
    deadEgg  
       2019-03-07 09:36:28 +08:00
    而且最近总是把系统搞崩。。
    tanranran
        3
    tanranran  
       2019-03-07 10:25:24 +08:00
    卧槽,楼主这个资源查看是什么啊,跪求分享。
    hei1000
        4
    hei1000  
       2019-03-07 10:34:47 +08:00
    @tanranran #3 终端里面的 top
    gz911122
        5
    gz911122  
       2019-03-07 10:44:24 +08:00
    @tanranran linux 自带的 top 命令啊
    kokutou
        6
    kokutou  
       2019-03-07 10:45:41 +08:00
    绿色守护伺候就行了。。。
    Navee
        7
    Navee  
       2019-03-07 11:02:49 +08:00
    现在安卓都能 top 看进程了= =
    honeycomb
        8
    honeycomb  
       2019-03-07 11:05:27 +08:00 via Android
    appops 伺候,把它的 run_in_background 禁用即可。
    另外,建议用 play 上的国际版,包可以到 apkpure 等地方下载
    skylancer
        9
    skylancer  
       2019-03-07 11:07:22 +08:00   ❤️ 1
    @Navee 我想知道哪一年不可以
    bunnyblueair
        10
    bunnyblueair  
       2019-03-07 11:08:16 +08:00
    @Navee shell 啊
    20015jjw
        11
    20015jjw  
       2019-03-07 14:01:36 +08:00 via Android
    @Navee 1.6 就行
    orangeade
        12
    orangeade  
       2019-03-07 14:02:41 +08:00
    港区下载 bilibili 国际版
    而且系统设置里把后台运行的限制打开就好了
    fox0001
        13
    fox0001  
       2019-03-07 14:06:34 +08:00 via Android
    不给后台运行就好了
    bluesky139
        14
    bluesky139  
    OP
       2019-03-07 14:38:55 +08:00
    @kokutou
    @honeycomb
    @orangeade
    @fox0001
    后台限制早就开了,没用。
    绿色守护也没用,我用的 Shadow Hibernation,我并不希望它在每次灭屏的时候被杀掉。
    国际版貌似不支持免流,也没有直播样。

    给我的感觉像是开了个线程没控制好,进入了死循环样。
    nanaw
        15
    nanaw  
       2019-03-07 14:43:21 +08:00 via Android
    @orangeade 国际版只要检测到系统语言非中文就会显示为繁体。十分恶心
    honeycomb
        16
    honeycomb  
       2019-03-07 17:47:51 +08:00 via Android
    @bluesky139
    shallow hibernation 确实没用,这东西不会杀进程,只是强迫应用进入 app standby 状态。你可能要专门为其使用普通模式+开启绿色守护的通知栏监听(但是这样只能解决后台播放时不杀)

    Android9 还有一个 run_any_in_background,会杀前台进程,所以也不适用你的情况。

    所以去 B 站的反馈群?

    play 版目前没有免流和直播,于是我放弃了这两个功能,但不会因此迁移回内地版。
    h3k5s9nx8n
        17
    h3k5s9nx8n  
       2019-03-08 13:38:32 +08:00 via Android
    分享一个我的解决办法
    没 root
    修改 AndroidManifest.xml 禁了些服务和 receiver
    服务仅保留 BackgroundMusicService IMPushService IjkMediaPlayerService KeepAliveService VideoDownloadService
    用 appops 改 run in background 为拒绝
    绿色守护添加 bilibili

    效果:
    有缓存任务时划掉后台仅后台下载服务存活,下载完成后如已熄屏会被系统杀掉,未熄屏会在熄屏时被绿色守护杀掉
    无缓存任务时划后台会直接被系统杀掉
    h3k5s9nx8n
        18
    h3k5s9nx8n  
       2019-03-08 13:40:11 +08:00 via Android
    @h3k5s9nx8n receiver 全禁
    h3k5s9nx8n
        19
    h3k5s9nx8n  
       2019-03-08 13:46:31 +08:00 via Android
    @h3k5s9nx8n 我用的 aosp9.0
    8.1 的时候需要用 appops 禁 3 个权限才能达到类似的效果 run in background wake lock 还有一个不记得了
    bluesky139
        20
    bluesky139  
    OP
       2019-03-10 12:44:54 +08:00 via Android
    @honeycomb 我就是想用 app standby 状态,然而不尽人意。反馈估计没用吧,像这种问题不直接跟开发讲别人都不知道你在说什么。
    bluesky139
        21
    bluesky139  
    OP
       2019-03-10 12:45:12 +08:00 via Android
    @h3k5s9nx8n 我用 appops 把 wake lock 禁了,然后把 service 和 receiver 几乎全禁了(有些会重新启起来),仍然没用。
    honeycomb
        22
    honeycomb  
       2019-03-10 15:50:32 +08:00 via Android
    @bluesky139 如果你就是想对 B 站的 app 用 app standby,那么就别想把它杀掉。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1010 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:59 · PVG 03:59 · LAX 11:59 · JFK 14:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.