0

我有以下问题:

我在商店中有一个应用程序,version code 1现在我正在为这个应用程序进行更新。问题是,如果用户已经保存了数据,我必须在用户更新到version code 2.

我的问题是,如何在android中实现这个?这可能吗?

伪代码应如下所示:

protected void onCreate(Bundle savedInstanceState) {
    if (old_version == 1 && version_now == 2)
    {
        // my update code which will only performed once in a lifetime of the app
    }
    // ...
}
4

2 回答 2

0

如果您使用SQLiteOpenHelper来管理您的查询,有一个名为OnUpgrade的方法会在用户升级他的应用程序时被调用,并且应用程序的新版本的版本代码比以前的版本代码大。

使用示例:

public static void onUpgrade(SQLiteDatabase database, int oldVersion,
  int newVersion) {
    Log.w(TodoTable.class.getName(), "Upgrading database from version "
    + oldVersion + " to " + newVersion
    + ", which will destroy all old data");
    database.execSQL("DROP TABLE IF EXISTS " + TABLE_TODO);
    onCreate(database);
}

如果您不想只删除表,您可以在这里使用 oldVersion 和 newVersion 对数据库进行增量更新。您必须确保增加数据库版本号。数据库版本号作为构造函数参数传递给 SQLiteOpenHelper。

增量升级示例:

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {                     
        if (newVersion > oldVersion) {
            db.beginTransaction();

            boolean success = true;
            for (int i = oldVersion ; i < newVersion ; ++i) {
                int nextVersion = i + 1;
                switch (nextVersion) {
                case 2:
                    success = upgradeToVersion2(db);
                    break;

                    // etc. for later versions.
                case 3:
                    success = upgradeToVersion3(db);
                    break;
                }


                if (!success) {
                    break;
                }
            }

            if (success) {
                db.setTransactionSuccessful();
            }
            db.endTransaction();
        }

    }
于 2013-10-09T07:44:25.950 回答
0

阅读应用程序版本,运行您的代码并将您已经运行代码的存储在 SharedPreferences 中。在这些问题中描述得非常好:

应用程序版本/名称:如何获取您的 Android 应用程序的构建/版本号?

仅运行一次:在 Android 设备上安装应用程序后仅运行一次代码

于 2013-10-09T07:36:42.980 回答