我正在开发一个Android服务。当服务停止时,将按预期的方式调用onDestroy
。然而,当我卸载应用程序,当服务运行时,onDestroy
没有被调用,使应用程序没有机会清理自己。
这是正常的吗?当应用程序被卸载时,我如何为服务执行关闭/清理逻辑?
发布于 2014-11-07 08:28:24
您不能保证在所有情况下都会调用onDestroy
。
当Android应用程序被系统拦截时,应用程序就不会优雅地关闭。相反,直接关闭它正在运行的进程要简单得多--基本上是立即关闭Dalvik实例。这是一种优化,它是通过沙箱将不同的应用程序放置在它们自己的运行时实例中来实现的。
这就是为什么onDestroy
不会被调用的原因--这个应用程序在它的轨道上停止运行。
此外,正如在Jim's good explanation中提到的,应用程序不能被告知他们自己的卸载。
发布于 2014-11-07 08:14:46
Android特别不允许在卸载时通知应用程序(想想恶意应用程序会做什么-重新安装,用弹出窗口发送垃圾邮件等等)。
如果你关心的是“清理”,然后把你的所有文件保存在你的私人应用空间(即不要使用SD卡)。否则,您必须期望用户进行清理。
没有其他选择。
请参阅有关卸载的相关文章:
https://stackoverflow.com/questions/26796117
复制相似问题