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

Android 主动清除后台之后, APP 又自启动是怎么实现的呢?

  •  
  •   lixyz · 2023-02-15 18:07:39 +08:00 · 10039 次点击
    这是一个创建于 678 天前的主题,其中的信息可能已经有所发展或是发生改变。

    下载了 Server 酱的 Android 端 App

    平时是有图标常驻通知栏的

    在多窗口界面清除后台之后,通知栏图标消失

    但随即又会在通知栏出现

    当然我已经设置了 APP 的 自启动 权限

    请问这个功能是如何实现的呢?

    第 1 条附言  ·  2023-02-17 13:56:41 +08:00
    之前没有做过类似的功能,所以完全没有头绪

    根据大家的回复,使用 learningman 的思路搞定了

    因为是自用 APP ,所以在权限方面很方便,最主要是想要接受推送

    我用了一下措施

    1.开启前台服务,降低被系统干死的奉献,这样的缺点是在通知栏一直会有图标显示

    2.在多窗口界面清空之后,在 destory 方法中添加唤醒任务,小米 10 实验成功,经过一天的测试,还可以正常接收推送

    更新一下,万一有遇到同样问题的伙伴,也有个参考
    12 条回复    2023-02-16 11:10:14 +08:00
    ziseyinzi
        1
    ziseyinzi  
       2023-02-15 18:21:22 +08:00
    首先,多任务界面划掉窗口不代表清除了后台
    lixyz
        2
    lixyz  
    OP
       2023-02-15 18:25:17 +08:00
    @ziseyinzi 其次呢?
    ysc3839
        3
    ysc3839  
       2023-02-15 18:34:13 +08:00 via Android
    可以看看 Telegram Android 的代码,我只知道也有这样的功能
    Fo3256Go
        4
    Fo3256Go  
       2023-02-15 18:44:15 +08:00 via Android
    应该是一个消息推送服务吧,
    不管是真的要推送消息,还是虚假地宣称推送消息为了保活。
    只要它这样宣称了,系统就会优先允许它留在后台。
    还有那种在后台播放空白音乐的,都是宣称自己有音乐要播放,其实是为了别的。
    cnuser002
        5
    cnuser002  
       2023-02-15 18:50:09 +08:00
    按你这描述,可能是做出了守护进程,在主程序挂了之后,守护进程再把它拉起来。相当于没有完全关闭,它就不停复活。你可以试试关闭手机重启,它还会不会自己冒出来。

    安卓应用常驻后台还是很常见的。你划掉可能只是应用的 Activity ,它还有个 Service 在后台运行着。Service 除了没界面,其它的活儿都能继续干的。
    learningman
        6
    learningman  
       2023-02-15 18:51:05 +08:00   ❤️ 1
    实现方法太多了,试举两例

    首先有通知是 foreground service 的强制要求,保活必须要有个 blocking 的通知挂在前台。应用被清除的时候会调用到 onDestroy 的 lifecycle hook ,可以在这个 hook 中做重新唤醒的操作。
    比如可以用 WorkManager 设置一个 1 秒后启动的单次任务唤醒。
    可以用 Alarm 设置一秒后的唤醒。

    方法太多了,我说的这些是调用正常 API 能实现的,反射搞黑科技的就更多了。
    jeesk
        7
    jeesk  
       2023-02-15 19:01:11 +08:00
    原生的可以。 国产 ui 你试一试呢? 多进程都会被干
    cheng6563
        8
    cheng6563  
       2023-02-15 19:39:24 +08:00
    正常 API 一堆
    makelove
        9
    makelove  
       2023-02-15 21:58:25 +08:00
    @jeesk 过于流氓的也不行吧,反正以前我用 miui 的时候搞不定 PDD
    rojer12
        10
    rojer12  
       2023-02-16 08:44:28 +08:00
    正常的 api 一堆,同系软件之间的相互唤醒啊,方法太多了
    不是常用软件的建议直接都放 ice box 冻结就好了
    systemcall
        11
    systemcall  
       2023-02-16 09:17:40 +08:00 via Android
    国产系统很多是有厂家级 api 的,比如微信就在用,不仅不会被轻易杀掉,还可以在应用自己觉得性能不够用的情况下杀掉别的应用
    jiaming1992
        12
    jiaming1992  
       2023-02-16 11:10:14 +08:00
    既然你已经设置了 app 自启动权限,那它就有概率会被其他保活应用唤醒啊,国产应用集成的乱八七糟第三方 sdk 那些个互拉行为不知道吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1555 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:52 · PVG 00:52 · LAX 08:52 · JFK 11:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.