为什么发布升级会重新安装删除内部数据存储的应用程序?

时间:2011-03-15 17:13:54

标签: android google-play upgrade

我开发和应用,然后我在Android Market上发布了它。 在开发了一些改进后,我为应用程序生成了升级。

升级已在Android电子市场上成功发布,设备已更新。 尽管如此,该应用尚未在用户设备上升级;它已被删除并再次安装,丢失了存储在内部存储上的应用程序的数据。

如何发布将安装在用户设备上的应用程序升级,同时保留应用程序的数据? 如何在不重新安装的情况下升级应用程序来发布应用程序的升级?

我的应用程序从Android 2.0(API 5)运行。

1 个答案:

答案 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的迁移代码。您可以检查旧版本的数据库并编写代码以将数据迁移到新架构。这可能很困难,但如果您的应用程序拥有大量用户生成的数据,则值得。

编辑:为了清楚起见,在这种情况下你的应用程序没有被重新安装,但是因为你的数据库被重新创建,数据被破坏,所以看起来它可能正在被重新安装。但是,您的共享首选项在升级时应该不受影响。