
[英]IntentService STICKY destroyed but service keeps logging data in Android 2.3.4
[英]Why a BLE scanning made in an IntentService keeps on working even when the service is destroyed?
我在Android中开发的第一个应用程序涉及BLE后台扫描。 该应用程序有两个按钮来启动服务(进行扫描并记录结果)和停止服务。
从文档中,我了解了Service和IntentService之间的区别。 我怀疑使用IntentService并不是最好的方法,因为在处理了所有传递给它的意图之后,Android系统会破坏该服务,因此在该服务创建的工作线程中运行的扫描也将停止工作。 但是,我想尝试一下以测试我的知识。
正如我所期望的那样,该服务在创建后几乎立即被销毁。 但是,有关检测到新设备的日志仍会不断出现,这意味着即使服务被破坏,扫描过程也能继续工作。 当我关闭主要活动时,扫描最终停止。 我想知道为什么扫描过程似乎绑定到主要活动的线程,而不是绑定到由意图服务创建的线程(自动)。 为什么即使服务已被破坏,扫描过程仍能继续工作?
根据流程优先级博客文章 :
Android不会仅仅为了杀死事物而杀死事物(请记住:从头开始并不是免费的!),因此这些进程可能会保留一段时间,然后由于更高版本中任何事物的内存需求而被回收类别,按最近使用最少的顺序杀死(最早的被回收)。
因此,即使您的服务已停止,您的进程也可以在内存中保留一段时间。 由于尚未明确停止onDestroy
上的BLE扫描,因此该工作将继续进行,直到您的进程被杀死以回收内存为止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.