Intereting Posts
Копирование нескольких файлов txt в / с помощью Android.mk Android CountDownTimer – последний onTick не называется – какое чистое решение использовать? Отключить сенсорные события WebView в Android Размытые пути смещения, когда холст масштабируется под аппаратным ускорением Можно ли программным образом удалить запоминаемые группы Wifi Direct из Android? Свойства Android, которые можно анимировать с помощью ObjectAnimator Персидский / арабский поиск в sqlite андроиде дает плохой результат Почему я получаю NullPointerException из Android 7 Nougat? Игрок YouTube играет в течение 2 секунд и останавливается в полноэкранном режиме Метод SQLiteDatabase.query Android и SQLite – получить максимальный идентификатор из таблицы FragmentTransacation с анимацией слайда / выхода на> 4 производительности Android Canvas drawLine Является ли идентификатор маркера GCM хорошей заменой для uuid устройства? Как искать контакты с адресом (FORMATTED_ADDRESS) с одним запросом?

Нажатие кнопки дома и доступ к приложению снова из приложения значок вызова onCreate?

У меня есть автономное онлайн-приложение, я нашел странную проблему, возможно, это не так, но я не понял об этом.
Требование к приложению заключается в том, что если доступ к Интернету возможен даже после запуска приложения или возобновления, я вызываю web-сервисы и сохраняю данные в sqlite, в противном случае приложение остается в автономном режиме,
У меня есть 2 действия, второе действие содержит идентификатор, который я пропускаю через намерение (этот момент важен),
Моя проблема:
Если я нахожусь во второй активности, и работает интернет, и я нажимаю кнопку «домой», то этот второй действие приостанавливается, а затем останавливается, что является поведением по умолчанию в Android, i goto настройками, отключает Wi-Fi, а затем снова нажмите значок приложения, чтобы вернуться В моем приложении, здесь я запутался, я ожидаю, что мое приложение теперь будет в onResume , но когда я вижу в logcat его сбой onCreated и приложение, возникает событие nullPointerException, потому что у этого второго действия нет этого id, я прошел через намерение ..

Заметка:
Если я использую недавнюю кнопку приложения, чтобы перейти к «настройкам», вернитесь снова после отключения wifi и повторите все это, после чего работайте нормально, его onResumes называется not oncreate ..

Мой вопрос
Почему это происходит в onCreate, в то время как я ожидаю, что буду onResume, пока я вернулся с иконки приложения?

После того, как вы называет onStop вашей деятельности, это восприимчиво к тому, чтобы быть убитым системой Android для сбора ресурсов для других приложений, что, как я думаю, произошло в вашем случае. Если он был убит, андроид, очевидно, будет вызывать OnCreate, когда вы вернетесь к активности. Check Это для уточнения. Для экспериментов вы можете попробовать открыть несколько приложений из своих последних приложений, а затем вернуться в свое приложение. Теперь он может упасть.

Причина NPE очевидна, ваша вторая активность не имеет значения, и она падает.

Почему у тебя другое поведение !?

Это потому, что намерения запуска различны. Когда вы выключаете «задача», Android просто останавливает ваше приложение, но оставляет его там ( нет гарантии ), если вы хотите переключиться обратно.

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

Взгляните на этот вопрос StackOverflow (и ответ), чтобы лучше понять последствия.

В любом случае, ваша проблема заключается в том, что ваше приложение всегда должно быть спроектировано для возобновления в несогласованном состоянии и возможности восстановления . Android убьет ваши ссылки, уничтожит ваши переменные и, скорее всего, отправит ваше приложение в ад за одну ночь, даже если вы его запустили … если телефон перейдет в режим ожидания, скорее всего, процессы, которые ничего не делают, будут приостановлены / остановлены и, вероятно, будут убиты ,

Переконструируйте приложение, чтобы это не проблема.

Ты говоришь:

«У меня есть 2 действия, вторая активность содержит идентификатор, который я прохожу через намерение (этот момент важен),"

Что ж, почему бы не сделать это проще и иметь ОДНУ деятельность и два фрагмента? Затем используйте аргументы фрагмента для передачи значения?

Или почему бы не сохранить значение в настройках и / или локальной базе данных и восстановить его во время onCreate?

И почему бы не сделать так, чтобы, если Activity 2 не имеет значения, он вызывает Activity 1 и закрывается (лучше, чем сбой, да?).

И т.п.

Как вы видите, есть несколько вещей, которые вы должны учитывать. В общем, никогда не верьте, что ваше приложение будет живым, потому что этого не произойдет.

Вы указали, что вы можете видеть, что активность остановлена ​​(onStop), если вы перейдете к настройкам. Это поведение, показанное в жизненном цикле активности Android. Другим элементом onStop является onCreate. Так он делает то, что говорит нам документация. Действия Btw приостанавливаются, если они видны каким-то образом и останавливаются, если они больше не видны. Это объясняет, почему ваша деятельность приостанавливается. Для получения дополнительной информации см. « Управление жизненным циклом деятельности» . Здесь вы можете найти целую картину жизненного цикла.

Этот тип поведения можно увидеть при изменении некоторых системных конфигураций, таких как тип шрифта, размер шрифта или язык. Но включение / выключение Wi-Fi не уничтожит приложение и не воссоздает его снова. Проверьте http://developer.android.com/guide/topics/manifest/activity-element.html#config для получения дополнительной информации.