如何确定Android应用程序是否强制关闭?
问题描述:
我需要确定,如果我的应用程序强制关闭,崩溃或正常终止。我的问题是:你如何在Android环境中做这样的事情。 处理异常很简单,我只需要替换Thread.setDefaultExceptionHandler。 困难的部分是:我怎样才能区分一个关闭关闭“正常”的力量(如后退按钮,或主页按钮+大量时间等)?如何确定Android应用程序是否强制关闭?
原因是:我们可以将本地数据库的内容同步到服务器。并且我们有充分的理由允许这种操作,只在主活动的状态1中,而不在状态2中。但是,如果用户在主活动的状态2中发现程序中某些与db有关的语义错误,那么他或她可以卡在那里。
我们准备了来电中断和其他配置更改,因此,如果应用程序陷入状态2,则强制关闭应用程序,然后重新打开应用程序,仍然会将用户留在阶段2中,而不是阶段1.
所以我们想留下一个办法,对于用户来说,在强制关闭后卡住回到第1阶段,并且能够同步数据库,所以他或她的大部分工作都可以保存。
答
不幸的是,没有办法。当用户或系统强制停止应用程序时,整个过程就会被终止。没有回电通知您发生了这种情况。即使onDestroy()
也不保证被调用。这是记录在文档中:"There are situations where the system will simply kill the activity's hosting process without calling this method (or any others) in it ..."
那么'getRuntime()。addShutdownHook'或者类似的东西。我知道'在Android上,应用程序生命周期不包括虚拟机终止,所以调用这个方法不会确保你的代码运行,但是没有人告诉我它何时被调用......是否没有方法可以使用? – Hegi
@Hegi正如我所说没有保证的方式,没有这个目的的方法。 –