【发布时间】:2025-12-21 04:35:15
【问题描述】:
我正在播放媒体,所以我有一个返回 START_STICKY 的绑定前台服务。简单的问题:我如何判断何时停止自我()?我有一些想法,但它们似乎都被各种陷阱所破坏......
尝试检测我的应用何时不再运行。通常的技术似乎是通过 ActvityManager.getRunningTasks() 但现在已弃用。此外,我们知道 Activity onDestroyed() 可能不会被调用,因此也不能依赖它。
稍等片刻:如果音频没有播放,例如 10 分钟,则终止服务。但这有一个问题,即应用程序可能仍在运行,而我的服务会执行一些其他操作,例如更新 UI 以显示“即将启动”,即使音频没有播放也是如此。
这给我留下了一种丑陋的选择 3:永远不要调用 stopSelf() 并且如果没有绑定就不要更新 UI。但是使用 stopForeground() 来帮助系统决定终止服务。
我错过了什么?
【问题讨论】:
标签: android android-service android-lifecycle