2013-10-09 53 views
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 
    } 
    // ... 
} 

回答

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(); 
     } 

    } 
相关问题