Какая разница между открытием приложения с экрана приложений и списком недавно используемых приложений? (андроид

Может ли кто-нибудь сказать мне, какая разница между открытием приложения на экране приложений и его открытием из недавно использованного списка приложений, который появляется, когда вы долго нажимаете кнопку "домой"?

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

Журнал ошибок сказал мне, что в методе getCount на моем массиве ArrayAdaptor для моего ListView произошло исключение nullPointerException.

В любом случае я просто задавался вопросом, есть ли разница в том, что мне нужно знать и адаптировать мой код для работы?

Ответ 1

AFAIK. Если ваше приложение полностью закрыто, запуск с экрана приложений и недавно использованных списков приложений не должен иметь разницы, оба обновления запустите приложение и откройте приложение MainActivity (путем стека нажмите приложение MainActivity во вновь созданную задачу )

Однако, поскольку Android - многозадачная ОС, ваше приложение можно поместить в фоновом режиме в режиме ожидания, то есть откройте приложение, а затем нажмите кнопку "домой", это не то же самое, что нажмите кнопку "Назад". Если вы не отменили нажатие этой клавиши в своем приложении, несколько раз нажмите кнопку "Назад", чтобы удалить все ваши действия со стека активности и, наконец, убить приложение, а нажатие кнопки "домой" приведет к тому, что система HomeActivity будет перенесена на передний план, а затем переверните приложение (AKA. задача с стеком активности) в фоновом режиме.

Здесь интереснее, зависит от того, какое значение вы сконфигурируете своей деятельностью android: launchMode в AndroidManifest.xml, если вы используете стандартный или singleTop:
1. Запуск приложения из недавно использованного списка приложений всегда возвращает вашу резервную активность на передний план, т.е. Переупорядочивает стек действий.
2. Запустите приложение с экрана приложений, создайте новый экземпляр вашего MainActivity и откройте его, т.е. Запустите вновь созданный MainActivity в стек операций, так что теперь у вас есть два экземпляра в вашем стеке активности приложений.

Если вы используете singleTask или singleInstance:
2. Запуск приложения с экрана приложений будет использовать резервный MainActivity (если есть) в вашем стеке активности приложений и повторно открыть его, то есть переупорядочить стек действий.

Оформить покупку Задачи и Back Stack, чтобы увидеть, как разные конфигурации могут повлиять на поведение стека приложений.

Ответ 2

Не должно быть никакой разницы в том, как действие запускается из истории, кроме того, что запуск Intent будет иметь FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY set.

Ответ 3

Я считаю, что не должно быть разницы. Это методы жизненного цикла, которые я обычно вижу при нажатии кнопки "домой" из активности, на Android 2.3.4

onPause
onStop

тогда, когда я использую значок или предыдущие приложения для перехода назад, я вижу

onRestart
onStart
onResume

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

onCreate
onStart
onResume

Я не думаю, что здесь есть что-то таинственное. Согласно Activity documentation, есть только четыре состояния, в которых может быть процесс, и оба они относятся к фоновой активности.

Ответ 4

Вот простой способ подумать об этом. Все ваши действия начинаются с намерений. Удержание кнопки "домой" позволяет открыть эту активность, используя последнее намерение, которое запустило ее. Это может дать вам некоторые неожиданные результаты. Например, если вы можете запустить свою деятельность из чего-то особенного, например, виджета.