2013-10-09 84 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(); 
     } 

    } 
相關問題