Google Market 更新软件机制

开发程序中遇到一个头痛的问题。找了好几天找不到完美的解释,所以想向大虾们解决。
当从Google Market更新一个存在的软件的时候。
Market进行的什么操作呢?是先uninstall 然后install?还是re-install进行更新呢?
如果uninstall再install 那么软件的SQLite和sharedpreferences就会被删除。
如果是re-install命令的话那么上述数据就会被得以保留。
还请赐教。不胜感激 :)

apk和用户数据实际上是保存在不同目录的。用户安装的apk在/data/app/*.apk,而它的用户数据保存在/data/data/<包名>下面。所以要在更新apk的时候保留用户数据是很简单的事情。
具体实现参考PackageManagerService.java的replacePackageLI方法,在其调用的replaceNonSystemPackageLI方法中有这么一行
// First delete the existing package while retaining the data directory

文件替换?

当本机上的apk版本低于下载好的apk版本时,系统会提示是否覆盖安装,过程中会提示是否保留用户数据,覆盖安装的前提是apk签名一样.