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

2023-02-15 18:07:39 +08:00
 lixyz

下载了 Server 酱的 Android 端 App

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

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

但随即又会在通知栏出现

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

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

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

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

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

方法太多了,我说的这些是调用正常 API 能实现的,反射搞黑科技的就更多了。
jeesk
2023-02-15 19:01:11 +08:00
原生的可以。 国产 ui 你试一试呢? 多进程都会被干
cheng6563
2023-02-15 19:39:24 +08:00
正常 API 一堆
makelove
2023-02-15 21:58:25 +08:00
@jeesk 过于流氓的也不行吧,反正以前我用 miui 的时候搞不定 PDD
rojer12
2023-02-16 08:44:28 +08:00
正常的 api 一堆,同系软件之间的相互唤醒啊,方法太多了
不是常用软件的建议直接都放 ice box 冻结就好了
systemcall
2023-02-16 09:17:40 +08:00
国产系统很多是有厂家级 api 的,比如微信就在用,不仅不会被轻易杀掉,还可以在应用自己觉得性能不够用的情况下杀掉别的应用
jiaming1992
2023-02-16 11:10:14 +08:00
既然你已经设置了 app 自启动权限,那它就有概率会被其他保活应用唤醒啊,国产应用集成的乱八七糟第三方 sdk 那些个互拉行为不知道吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/916424

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX