我开发和应用,然后我在Android Market上发布了它。 在开发了一些改进后,我为应用程序生成了升级。
升级已在Android电子市场上成功发布,设备已更新。 尽管如此,该应用尚未在用户设备上升级;它已被删除并再次安装,丢失了存储在内部存储上的应用程序的数据。
如何发布将安装在用户设备上的应用程序升级,同时保留应用程序的数据? 如何在不重新安装的情况下升级应用程序来发布应用程序的升级?
我的应用程序从Android 2.0(API 5)运行。
答案 0 :(得分:1)
如果你有一个数据提供者并且你跟着其中一个例子,你的代码中可能有一个DATABASE_VERSION。除此之外,可能会出现这样的情况:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
LogUtils.w(mContext, "Processor", "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS "+REST_TABLE_NAME);
onCreate(db);
}
这意味着如果在更新代码时更改DATABASE_VERSION,它将删除表并从头开始重新创建它们。如果这是正在发生的事情,你有两个选择:
1)不要更改DATABASE_VERSION。当然,这只有在你没有改变你的架构时才有意义,但是你去了。
2)编写onUpgrade的迁移代码。您可以检查旧版本的数据库并编写代码以将数据迁移到新架构。这可能很困难,但如果您的应用程序拥有大量用户生成的数据,则值得。
编辑:为了清楚起见,在这种情况下你的应用程序没有被重新安装,但是因为你的数据库被重新创建,数据被破坏,所以看起来它可能正在被重新安装。但是,您的共享首选项在升级时应该不受影响。