Android 卸载应用程序不会';t触发器onDestroy正在使用中

Android 卸载应用程序不会';t触发器onDestroy正在使用中,android,android-service,uninstallation,Android,Android Service,Uninstallation,我正在开发一个Android服务。当服务停止时,会按预期调用onDestroy。但是,当我在服务运行时卸载应用程序时,onDestroy不会被调用,从而使应用程序无法自行清理 这正常吗?卸载应用程序时,我如何执行服务的关闭/清理逻辑?Android特别不允许在卸载应用程序时通知应用程序(想想恶意应用程序会做什么-重新安装,向用户发送弹出窗口垃圾邮件等) 如果您关心“清理”,请将所有文件保存在您的私人应用程序空间中(即不要使用SD卡)。否则,您必须期望用户进行清理 没有其他选择 请参阅以下有关卸

我正在开发一个Android服务。当服务停止时,会按预期调用onDestroy。但是,当我在服务运行时卸载应用程序时,
onDestroy
不会被调用,从而使应用程序无法自行清理


这正常吗?卸载应用程序时,我如何执行服务的关闭/清理逻辑?

Android特别不允许在卸载应用程序时通知应用程序(想想恶意应用程序会做什么-重新安装,向用户发送弹出窗口垃圾邮件等)

如果您关心“清理”,请将所有文件保存在您的私人应用程序空间中(即不要使用SD卡)。否则,您必须期望用户进行清理

没有其他选择


请参阅以下有关卸载的相关帖子:


您不能保证在所有情况下都会调用
onDestroy

当Android应用程序被系统停止时,应用程序不会正常关闭。相反,只杀死运行它的进程要简单得多——基本上是立即关闭Dalvik实例。这是一种优化,通过在各自的运行时实例中放置不同应用程序的沙箱实现

这就是为什么不会调用
onDestroy
的原因-应用程序在运行过程中完全停止



此外,如中所述,无法通知应用程序其自身的卸载

从最近的应用程序中删除应用程序时,也会出现类似的情况。也不会调用应用程序或活动/服务
onDestroy
方法。我认为这是正常的,只是请记住,卸载应用程序时服务不存在。看起来你是对的,这是不可能的,但除了删除文件,还有更多的事情要清理。在我的情况下,我正在开发一个自定义旋转管理器,我需要能够在卸载时恢复屏幕方向设置,以防止屏幕半卡在错误的方向上。我不同意你的理由;有很多可以被滥用的东西仍然是被允许的。例如:阅读联系人、更改系统设置、随机弹出广告、秘密拍照、使用帐户、阅读消息等,所以说“它可能被恶意应用程序滥用”似乎不一致。关于卸载时应用程序自身的重新安装,Android是否允许应用程序以静默方式安装应用程序?首先,否-一个应用程序在用户不知情的情况下(最多)无法安装另一个应用程序。其次,恶意行为的能力并不意味着用户不能将该权限授予应用程序。您提到的大多数内容都是“基于权限的”操作。我的反应是说明问题,而不是制定政策。app Lookout过去常常利用一个bug,让他们能够检测到卸载,而没有恶意意图或行为。据我所知,从未发生过恶意事件。安卓(谷歌)“修复”了这个错误。。。