gpt4 book ai didi

android - 使用服务时从最近的任务中删除应用程序不会被杀死

转载 作者:行者123 更新时间:2023-12-04 23:49:11 28 4
gpt4 key购买 nike

首先这个问题是不是 关于如何防止应用程序被杀死。其实我想杀了它。
现在的问题。我的应用程序连接到 BLE 设备,我希望在应用程序处于后台时保持连接,但我不希望在用户从最近的应用程序中删除应用程序时保持连接。
我实现了一个在连接启动时运行的服务,当应用程序进入后台时我将其发送到前台。我只用 bound service 都试过了它在 Activity 被破坏时被破坏,并且started service我停在onTaskRemoved .两种情况都有相同的问题。
问题是当我不使用该服务并从最近删除该应用程序时,它被正确杀死并且BLE连接被终止,但是当我开始使用服务时,应用程序进程似乎仍然处于 Activity 状态并且BLE连接持续存在。
我使用 Android Studio 分析器进行了一些调查,我可以看到在我从最近删除应用程序后,我的应用程序中没有 Activity 并且没有运行服务,但 Application 对象仍然存在。
Leakanary 也不报告任何内存泄漏。
好像可能类似于this issue ,但没有答案。也有点类似于this issue ,但我使用干净的 Android,而不是 Cordova 。
我调查了 Logcat 并在没有服务的情况下得到:

HwRecentsTaskUtils: remove task send broadcast packageName={my_package_name}, userId=0,taskId=16893
ActivityManager: Killing 30468:{my_package_name}/u0a918 (adj 900): remove task

WindowManager: WIN DEATH: Window{bcb8d8c u0 {my_package_name}/{my_package_name}.MainActivity}
在服务的情况下,我得到:
HwRecentsTaskUtils: remove task send broadcast packageName={my_package_name}, userId=0,taskId=16894

ActivityThread: Remove activity client record, r= ActivityRecord{787d7fd token=android.os.BinderProxy@216a996 {{my_package_name}/{my_package_name}.MainActivity}} token= android.os.BinderProxy@216a996
MyService: service onTaskRemoved
MyService: service onDestroy
在第二种情况下,应用程序任务似乎没有被删除,我不知道为什么。当 Activity 和服务都没有激活时,是什么阻止了我的应用程序被杀死?

最佳答案

您正在谈论托管您的应用程序的操作系统进程,而不是“任务”(这是一个 Android 构造)。 Android 负责杀死操作系统进程并回收它们。如果它愿意,它会在它想要的时候执行它,而你无法控制它。您不能假设您的操作系统进程在任何特定情况下都会被杀死。
您需要以可以处理发生的任何事情的方式编写代码。

关于android - 使用服务时从最近的任务中删除应用程序不会被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67026238/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com