【发布时间】:2014-03-20 19:00:00
【问题描述】:
我有一个由服务和各种活动组成的 Android 应用。当应用启动时,Service 使用 startService(Intent service) 启动。各种活动(但不是所有活动)绑定到服务并从中发送/接收消息。当应用程序在任何活动的前台或后台时,服务应该处于活动状态,但应该在整个应用程序关闭时结束(即用户从最近的应用程序屏幕滑动应用程序)。
我如何从服务(当前从未停止运行,直到您在设备上手动停止它)确定应用进程已结束,以便我可以停止服务?
【问题讨论】:
-
您可以在服务中的活动上检查静态变量是否为 null,因此如果变量为 null,则活动已经完成
-
请不要这样做。它会导致非常糟糕的代码设计和您无法预测的问题,从内存泄漏开始。
-
@Artyomcool 现在已经意识到我遇到的问题实际上与 Android 上的低功耗蓝牙有关。一些设备过滤广告数据包,而另一些设备则被它们淹没。在后者上运行我的应用程序时,即使在关闭应用程序、强制停止服务、卸载应用程序、甚至关闭并重新打开蓝牙之后,BLE 发现扫描也永远不会结束......