A null
регистрация onCreate()
должна работать просто отлично. Нет необходимости устанавливать отдельный флаг в onSaveInstanceState()
. Хотя есть одна возможная проблема.
Скажите, что пользователь поместил ваше приложение в фоновом режиме (нажав клавишу home). Процесс подачи заявки в конечном итоге будет убит. Когда пользователь перезапустит приложение, вы получите соответствующий Bundle
объект в onCreate()
с установленным флагом. Пользователь может предотвратить увеличение вашего счетчика, просто создав фоновое изображение для вашего приложения.
Если фоновая обработка может быть проблемой, вы можете попробовать что-то вроде:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (getLastNonConfigurationInstance() == null) {
counter++;
}
}
public Object onRetainNonConfigurationInstance() {
return new Object();
}
Я уже использовал приведенный выше код, и он работает на Eclair, FroYo и Gingerbread. Похоже, getLastNonConfigurationInstance()
и onRetainNonConfigurationInstance()
были помечены как устаревшие в Honeycomb, поэтому я не уверен, как это будет работать, если вы настроите таргетинг на Honeycomb.