我知道服务的 onDestroy() 方法可能永远不会被调用,但有人能告诉我这种情况何时会发生吗?我特别感兴趣的是服务是否有可能被终止,但它的 VM 会继续运行。
我问是因为我有一个服务在服务的 onStartCommand() 方法中注册 ContentObservers 并在 onDestroy() 中注销它们。如果服务的 onDestroy() 方法从未被调用,因为整个 VM 被杀死(连同它创建的观察者),那也没关系。但我想知道服务是否有可能在不调用 onDestroy() 的情况下“消失”,而它创建的观察者将继续存在并继续接收更改。
最佳答案
I'm aware that a Service's onDestroy() method may never be called but can someone tell me when such a scenario might occur?
以下是我想到的三个:
如果用户强制阻止您使用“设置”应用
如果 Android 急需 RAM(例如,处理来电)并选择终止您的进程以释放 RAM
您从 DDMS 终止进程
此外,如果您的服务因某处未处理的异常而崩溃,Android 可能会认为该服务已失效并跳过 onDestroy()
。我不确定这个,因为我还没有专门尝试过。
But I'm wondering if it's possible for a service to "go away" without onDestroy() being called, while the observers it created would live on and continue to receive changes.
除了我上面提到的未处理异常的可能性之外,我有理由相信如果进程将在 onDestroy()
未被调用的情况下终止。
关于android - 服务的 onDestroy() 方法没有被调用的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14147846/