我有一个长期运行的服务,它响应多个BroadcastReceivers
(在代码中创建,而不是清单)。大多数时候服务运行良好,但有时它会以某种方式停止(BroadcastReceivers
停止工作) - 我猜系统会以某种方式暂停它(当我查看设备上正在运行的进程时,我可以清楚地看到服务仍在“运行”)。
我不知道暂停服务的正确原因,但我想知道在这些情况下onDestroy()
是否调用了该方法,或者是否有机会以某种方式处理这个问题。
我认为onDestroy()
没有被调用,因为该服务在 Running processes 选项卡中仍然可见。我还让服务返回START_STICKY
标志,因此系统应该在它因内存原因被杀死时重新启动它。此外,如果它以某种方式“暂停”,是否可以创建一个WakeLock
不发生这种情况?
我知道最好的解决方案是将所有内容放入清单并创建一个从他们的方法BroadcastReceivers
调用的一次性服务。onReceive()
但是我选择了长时间运行服务的方式,因为初始化阶段非常密集,最好只初始化一次。