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

    } 
Смежные вопросы