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

Android 省电策略 杀服务怎么办?

  •  
  •   as9567585 · 179 天前 · 4575 次点击
    这是一个创建于 179 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正在做一个语音房功能。flutter 开发的,不太懂 android 原生。

    目前测试机是小米 9 MIUI12.5 。

    设置了 app 常驻后台,虽然不杀后台了。

    但是锁屏一段时间后,语音房内的 websocket 和 webrtc 就都断了。

    测试发现把“省电策略”设置“无限制”,就能正常锁屏,并保持语音通话了。

    想问下,针对这个“省电策略”,开发者能做什么呢?

    • 有 api 可以申请“无限制”?

    • 或者直接向厂商申请?

    28 条回复    2023-11-03 10:14:35 +08:00
    psklf
        1
    psklf  
       179 天前
    开前台服务也不行吗?
    shinsekai
        2
    shinsekai  
       179 天前
    有各种保活方法吧,比如一像素悬浮窗或者闹钟什么的
    fredcc
        3
    fredcc  
       179 天前
    小米系统:让用户自己选择,设置无限制耗电
    CEBBCAT
        4
    CEBBCAT  
       179 天前
    你做了哪些研究呢?
    vcn8yjOogEL
        5
    vcn8yjOogEL  
       179 天前
    https://dontkillmyapp.com
    可以弹窗申请,但不知道弹窗会不会被系统拦截
    知名 App 在系统的白名单里
    ysc3839
        6
    ysc3839  
       179 天前 via Android
    确定有做成前台服务(通知栏常驻)?我手头上的 MIUI ,那些有前台服务的 app ,即使设置成智能限制也是正常的。
    Musong
        7
    Musong  
       179 天前
    自启动+省电无限制,李跳跳也没挂过
    rokycool
        8
    rokycool  
       179 天前
    小米有多重休眠;
    1 基于云控的神隐模式,
    2 后台管控的无限制
    3 动作传感器+时间段 的所谓"自适应休眠"

    建议你要不直接用 root 吧
    as9567585
        9
    as9567585  
    OP
       179 天前
    @psklf 只要不锁屏,就没有问题的,切换到其他 app ,后台挂起也没有事。

    就是锁屏之后,只要不修改“省电策略”为“无限制”, 就会杀 websocket 和 webrtc
    as9567585
        10
    as9567585  
    OP
       179 天前
    @ysc3839 不太懂 Android 原生,会一点 flutter ,我研究下
    as9567585
        11
    as9567585  
    OP
       179 天前
    @rokycool 😂, 我 root 可以,也不能让用户都 root 啊
    as9567585
        12
    as9567585  
    OP
       179 天前
    @Musong 很久没有用 Android 了,也非 Android 开发,flutter 写的。

    总是让用户自己去设置“省电模式”,感觉不太友好啊。

    还是想问下专业的 Android 开发,有什么办法能在开发侧就处理了,不要麻烦用户。
    as9567585
        13
    as9567585  
    OP
       179 天前
    @vcn8yjOogEL 听说过知名的 app 都在系统的白名单里,这些小 app 怎么办呢,只能麻烦用户去设置省电模式了吗?
    gam2046
        14
    gam2046  
       179 天前
    尝试 acquireWakeLock 以及 WifiLock
    vcn8yjOogEL
        15
    vcn8yjOogEL  
       179 天前
    @as9567585 #13 对的,一般来说启动时会有一个欢迎页面解释这些权限,然后再弹窗向用户请求
    原生一般点确认就不用管了,第三方系统可能还会有一堆杂七杂八的优化需要修改

    以及没记错持续通知也可以用来保活,因此你可以做一个像通话那样的通知,这样就不需要申请权限了
    TArysiyehua
        16
    TArysiyehua  
       179 天前
    @as9567585 专门出一个页面解释你的 app 要锁屏联网,让用户跳转到省电页面,给你的 app 设置即可。问题来了,锁屏为啥非要连着呢?如果是产品要求,那其实还有合规问题的。
    如果非要搞,就让产品按照我之前说的,出页面解释。让用户去开,如果用户没开那就没办法了。
    另外没有 api 可以申请
    as9567585
        17
    as9567585  
    OP
       179 天前
    @TArysiyehua 语音房嘛,语音通话,有的时候聊天聊着聊着就忘记,手机待机自动就锁屏了。

    就像微信,有的时候就锁着屏聊天。
    as9567585
        18
    as9567585  
    OP
       179 天前
    @vcn8yjOogEL 我研究研究,,
    Musong
        19
    Musong  
       179 天前
    @as9567585 #12 目前我遇到的 国内的李跳跳、椒盐音乐,都是引导用户跳转省电设置修改。国外的 FloderSync 也是。似乎现在提倡各种权限让用户自己选择
    Musong
        20
    Musong  
       179 天前
    @Musong #19 还有 AnyDesk RustDesk 啥的,不过 都是直接跳转该应用的省电设置界面,chua 的一下一步到位
    TArysiyehua
        21
    TArysiyehua  
       179 天前
    @as9567585 为啥不申请屏幕常亮,不锁定屏幕呢?
    ysc3839
        22
    ysc3839  
       179 天前 via Android
    @as9567585 理论上来说你弄了前台服务(通知栏有常驻通知),不需要特殊设置(自启动关闭,省电策略智能限制)就能一直运行的。
    MIUI 有几个特殊开关:
    “自启动”控制是否能开机时启动,以及被杀死后能否自动重启。
    “省电策略”控制没有前台服务时,后台服务(对用户完全不可见的服务)能运行的时长。
    “最近任务锁定”控制按最近任务最底下 X 时会不会被清理。
    MIUI 有一个与 AOSP 逻辑不一致,且用户没法控制的功能,那就是最近任务划掉 Activity ,会杀死整个应用。
    如果某个应用是在 MIUI 白名单内(比如微信),且用户对这个应用开启了“自启动”,那划掉才不会被杀死。
    如果这个应用不在白名单,但是开启了自启动,划掉会被杀死,但是应用可以立刻重新启动。一个案例是 Telegram ,在 Telegram 设置里开启后台保活,同时在 MIUI 设置里开启自启动,划掉 Telegram ,再打开应用信息,可以看到是在运行的(结束运行按钮不是灰的),关闭自启动,再划掉 Telegram ,应用信息里就显示不在运行了。
    lindongwu11
        23
    lindongwu11  
       178 天前
    我自用的笔记应用是作为开发者挂个常驻提示(还能用于点击唤醒),然后自己作为用户还得开锁定+后台无限制。
    psklf
        24
    psklf  
       178 天前
    @as9567585 #9 先实现前台服务吧。
    as9567585
        25
    as9567585  
    OP
       178 天前
    @TArysiyehua 正准备,先这样做下,感觉也不太友好,比较耗电。 临时先这样弄下吧
    as9567585
        26
    as9567585  
    OP
       178 天前
    @Musong 看来也只有这样了,“引导用户跳转省电设置修改”
    as9567585
        27
    as9567585  
    OP
       178 天前
    @ysc3839 @psklf 这个 “前台服务(通知栏有常驻通知)” 我研究下, 不是搞 Android 开发的 😂,以前是主要是搞后端开发的。
    4kingRAS
        28
    4kingRAS  
       178 天前
    用 Alarm 唤醒给你的 websocket 发心跳保活
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5575 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:27 · PVG 16:27 · LAX 01:27 · JFK 04:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.