android - 服务的 onDestroy() 方法没有被调用的情况?

标签 android android-service ondestroy

我知道服务的 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/

相关文章:

java - 如何查找 Android 设备中的所有文件并将它们放入列表中?

android - Android 中的前台通知启动新 Activity(通过 pendingIntent)而不是现有 Activity

android - Android 服务中错误处理的最佳实践

Android - 在调用 stopService 时销毁服务

java - 在 AChartEngine 中将堆积条形图转换为堆积 100 条形图

使用 FileOutputStream 使用进度条下载 Android ION

android - 从 Android 上的服务设置音量控制流

android - 防止新 Intent 或切换应用程序破坏 Activity

android - 如果我们在 override 函数中的 super() 函数之前或之后编写代码会产生什么影响

java - Socket-C服务器、Android客户端