有关Android应用程序更新的问题

Sam*_*muh 17 database android upgrade

几个问题 :

  1. 升级应用程序对存储的数据(首选项和数据库)有何影响?系统是否执行新版本的干净安装(即删除旧版本然后安装新版本)或其他内容?

  2. 如果用户想要保留存储的数据 - 例如共享首选项或sqlite数据库中的值,该怎么办?

  3. 如何模拟此应用更新安装方案?如果我在我的emualator上安装了版本'x',并且我安装了版本'x + 1'的adb,我就会收到INSTALL_FAILED_ALREADY_EXIST错误消息.我应该尝试在Web服务器上托管新的apk,包管理器会将此作为更新吗?

Fel*_*lix 31

  1. 所有数据都存在(文件,首选项,数据库).数据库是特殊的,你可以指定一个数据库版本,如果它检测到的版本改变了它会叫你的onUpgrade().对于所有其他人,如果需要,您有责任将其更新为新版本.
  2. 正如我在1中所说,Android坚持一切.由您来处理存储数据的方式的任何变化.
  3. 使用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
Run Code Online (Sandbox Code Playgroud)

其他说明:是的,在应用程序执行干净去除您的应用程序的安装新版本之前.但是,正如我所说,您的应用程序的数据不会被删除.但是,你必须要小心,因为这种删除会导致一些事情:

  • 与您的应用程序的所有进程杀死(所以如果您的应用程序正在运行 - 的任何活动,服务,任何东西,所有的部件会被杀死).
  • 与您的应用程式内容从系统中删除,通知等通过推动NotificationManager通过设置,报警AlarmManager,等我不知道会发生什么,你可能拥有的任何部件(从来没有与小部件的工作).