В чем разница между открытием приложения на экране приложений и в списке недавно использованных приложений? (андроид - PullRequest
10 голосов
/ 02 декабря 2011

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

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

В журнале ошибок сообщалось, что в методе getCount на моем ArrayAdaptor для моего ListView появился исключение nullPointerException

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

Ответы [ 4 ]

2 голосов
/ 02 декабря 2011

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

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

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

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

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

1 голос
/ 02 декабря 2011

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

.
onPause
onStop

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

onRestart
onStart
onResume

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

onCreate
onStart
onResume

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

1 голос
/ 02 декабря 2011

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

0 голосов
/ 02 декабря 2011

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

...