Intereting Posts
Пользовательская информация в Google карте android v2 Создание проекта Android Studio с помощью функции HoloEverywhere Получить идентификатор электронной почты и имя из встроенной телефонной книги Android. Прозрачная панель навигации (Android 4.4) – отображение содержимого под Когда метод getItemCount и getItemViewType вызывается в адаптере Recycler Предотвращение расширения строки состояния Каков правильный способ реализации AsyncTask? Статический или нестатический вложенный класс? Сбой подключения принтера Epson ERR_CONN Резервное копирование / восстановление Android: как создать резервную копию внутренней базы данных? Как сделать push-уведомление от android от php Как загрузить изображение, снятое с камеры в приложении для Android Как автоматически заполнить электронный адрес электронной почты с идентификатором электронной почты, с помощью которого устройство зарегистрировано Попытка автовоспроизведения видео YouTube в приложении PhoneGap / Cordova Почему Android WebView отказывается от ввода пользователя? Что указывает sf_frame_dur в журналах Logcat Android?

Жизненный цикл активности Android в Jelly Bean

Я разрабатываю приложение уже несколько месяцев и готовлюсь к выпуску. Я использую Motorola Xoom с Android 4.0.4 для тестирования на протяжении всего процесса, и все работает безотказно. Я купил Nexus 7 у Google (работает Jelly Bean 4.1), и теперь у меня возникают всевозможные проблемы с жизненным циклом активности, когда устройство спит или выключается.

Я создал новый проект с единственной целью проверки жизненного цикла, и это результаты, которые я придумал. Следующий код является примером того, что я сделал в каждом из методов жизненного цикла.

@Override protected void onPause() { Log.i("TEST", "onPause()"); super.onPause(); } 

Результаты Xoom (ожидаемые результаты)

 ---------- Program Launch ------------- onCreate(null) onStart() onResume() ---------- Turn Off Screen ------------ onPause() onSaveInstanceState(not null) onStop() ---------- Turn Screen On ------------- onReStart() onRestoreInstanceState(not null) onResume() 

Результаты Nexus 7 (неожиданные результаты)

 ---------- Program Launch ------------- onCreate(null) onStart() onResume() ---------- Turn Off Screen ------------ onPause() onSaveInstanceState(not null) onStop() onDestroy() onCreate(not null) onStart() onRestoreInstanceState(not null) onResume() onPause() ---------- Turn Screen On ------------- OnResume() onPause() onSaveInstanceState(not null) onStop() onDestroy() onCreate(not null) onStart() onRestoreInstanceState(not null) onResume() 

Опять же, эти результаты взяты из совершенно нового проекта без каких-либо изменений кода, кроме операторов Log в каждом из методов. Почему так много дополнительных, ненужных вызовов методов, когда Nexus 7 отключается и возвращается? Кажется, это полностью разрушает приложение, а затем воссоздает.

Для полноты использования, когда вы используете домашнюю кнопку, а затем возобновляете приложение, жизненный цикл, похоже, согласован между устройствами.

Заранее благодарю за любую помощь. Wayne

Похоже, что ваша активность воссоздана в рассматриваемых сценариях. Обычно это происходит, когда в системе происходит изменение конфигурации . Ваша деятельность воссоздана и перезапущена по умолчанию, если вы явно не решите самостоятельно изменить конфигурацию. Вы должны проверить этот список , одно из этих изменений может произойти при включении / выключении экрана (так как вы уверены, что не вращаете устройство одновременно).

О изменениях конфигурации вы можете прочитать на этой официальной странице .

Jelly Bean 4.1 – Nexus 7 имеет один вариант на этом пути:

Настройки -> Параметры разработчика -> Не выполнять действия …

Этот параметр уничтожит все действия, которые идут в фоновом режиме. Поэтому, когда Android меняет статус на «спящий» и «пробуждается», ваша деятельность уничтожается и воссоздается.