В моем приложении для Android есть некоторые общие настройки, и один из них не следует использовать в следующем выпуске. Однако это значение следует использовать в другом общем предпочтении. Я мог бы просто полениться и проигнорировать это, но тогда пользователь должен выполнить некоторые настройки после обновления, чтобы приложение работало должным образом. Поэтому я хочу сделать это во время обновления приложения, другими словами, взять существующее значение из общих настроек и поместить его в новые общие настройки. Это следует сделать только один раз после обновления.
Это то, что я имею в виду, но я не знаю, является ли это лучшей практикой:
Код: Выделить всё
public class UpgradeHandler extends Application {
@Override
public void onCreate() {
super.onCreate();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean("firstTime", true)) {
// Make my shared preferences data migration
// Other stuff to be done once after upgrade
// Store to shared prefs that first time has passed
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", false);
editor.commit();
}
}
}
Я знаю, что механизм обработки действий обновления можно поместить в обычный класс, расширяющий Activity, но для моего приложения крайне важно, чтобы эта обработка общих настроек выполнялась после обновления, поскольку общие настройки, которые должны быть обновлены, могут использоваться в BroadcastReceiver при любой установке приложения. И если я правильно понял, то класс, расширяющий Application и его метод onCreate, всегда вызывается перед любыми действиями, широковещательными приемниками, службами и так далее. Наличие моей обработки обновлений в таком классе должно в моем случае гарантировать, что обработка моих предпочтений всегда выполняется после обновления, но до вызова каких-либо действий или широковещательного приемника. Правильно ли это?
Мой другой вопрос: если я выберу такое решение, правильно ли будет назвать переменную общих предпочтений firstTime, я имею в виду, что я не могу использовать ее в следующий раз, когда мое приложение обновляется, если мне нужно запустить что-то один раз, firstTime тогда будет ложным. Не лучше ли было бы назвать общие настройки, используемые для этого, в каком-то шаблоне, например firstTime_version?
Надеюсь, вы понимаете мои вопросы, внизу я просто хочу узнать, как лучше всего обрабатывать код, который необходимо выполнить после обновления приложения.
Спасибо!>
Подробнее здесь:
https://stackoverflow.com/questions/221 ... app-update