【发布时间】:2017-09-24 10:31:33
【问题描述】:
我在 Android 中开发的第一个应用程序涉及后台 BLE 扫描。该应用程序有两个按钮来启动服务(进行扫描并记录结果)和停止服务。
从documentation我了解到Service和IntentService的区别。我怀疑使用 IntentService 不是最好的方法,因为 Android 系统会在处理传递给它的所有意图时破坏服务,因此在服务创建的工作线程中运行的扫描也会停止工作。但是,我想尝试一下以测试我的知识。
正如我所料,服务在创建后几乎立即被销毁。但是,通知检测到的新设备的日志不断出现,这意味着即使服务被破坏,扫描过程也会继续工作。当我关闭主要活动时,扫描最终停止。我想知道为什么扫描过程似乎绑定到主要活动的线程而不是意图服务创建的线程(自动)。为什么即使服务已被破坏,扫描过程仍然有效?
我找到了一些与服务和 BLE 扫描相关的 SO 答案(here 和 here),但没有人解决这个特定主题。你能给我一些帮助吗?
【问题讨论】:
-
你能显示你的 IntentService 的代码吗?
标签: android multithreading android-activity bluetooth android-service