当我重新安装我的android应用程序时会发生什么
问题描述:
当我重新安装我的应用程序而不先删除它时会发生什么?当我重新安装我的android应用程序时会发生什么
我正在寻找的是,当我的应用程序正在运行,和我做了重新安装后,
Activity.OnDestroy()没有被调用。
我必须在应用程序关闭之前做些事情。
答
使用onPause()
。根据this,onPause()
是唯一的方法是保证被调用。后者可能不会被调用onStop()
和onDestroy()
。
但是,AFAIK无法告诉为什么您的应用程序正在暂停(例如重新安装)。检测重新安装的唯一方法是这样的:
- 使用
SharedPreferences
来存储您的应用程序的版本代码。 - 当应用程序启动时,根据当前版本代码检查存储的版本代码(后者使用
PackageManager
)。如果存在差异,请在升级应用程序时执行您需要执行的操作,并覆盖SharedPreferences
中的以前的版本代码。
另请注意,这需要版本代码在重新安装之间碰撞。如果您只是在使用包含相同版本代码的软件包adb install -r
,则无法分辨。
答
阅读生命周期描述 - onDestroy()不保证被调用 - 唯一可靠的回调是onPause() - 所以你必须在那里做你的事情。
我正在添加一个标志,以了解我的应用是否会导致onPause。所以我消除了大部分或甚至所有情况 – piojo
这可能不是一个好主意。您的应用也可以通过以下方式进行暂停:电话呼叫,用户点击/回家,用户点击通知等。 – Felix