几个问题:
升级应用对存储的数据(首选项和数据库)有何影响?系统是否执行新版本的全新安装(即删除旧版本然后安装新版本)或其他内容?
如果用户想要保留存储的数据 - 例如共享首选项或sqlite数据库中的值,该怎么办?
如何模拟此应用更新安装方案?如果我的emualator上安装了版本'x',并且我安装了版本'x + 1'的adb,则会出现INSTALL_FAILED_ALREADY_EXIST
错误。我是否应该尝试在Web服务器上托管新的apk,包管理器会将此作为更新吗?
答案 0 :(得分:31)
onUpgrade()
。对于所有其他人,如果需要,您有责任将其更新为新版本。adb install -r /path/to/newApk.apk
(注意-r
标志,告知adb r einstall)。基本上,工作流程应如下:
adb uninstall my.package
adb install /path/to/old.apk
# play with app, set preferences, databases, etc.
adb install -r /path/to/new.apk
# watch your app crash in an impressive ball of fire
# fix stuff
# goto 0
其他说明:是的,应用会在安装新版本之前执行 clean 删除您的应用。但是,正如我所说,您的应用数据未被删除。但是,你必须要小心,因为这种删除会导致一些事情:
NotificationManager
推送的通知,通过AlarmManager
设置的闹钟等。我不确定您可能拥有的任何小部件会发生什么(从未使用过小部件)。答案 1 :(得分:1)
onUpgrade()
方法,即