Поймать возврат приложения из фона в Android - PullRequest
1 голос
/ 27 декабря 2011

Я создал личную книгу контактов, в которой занято около 10 занятий в соответствии с бизнес-требованиями для групп, контактов, редактирования, просмотра, удаления нескольких и т. Д.

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

Также, пожалуйста, обратите внимание, что если в другом приложении той же книги контактов не отображается экран входа в систему.

Я пытался использовать onResume, onStart, onPause и onStop события каждого действия, переопределяя функциональность в различных активностях для входа в систему, но это не удовлетворяет, как будто приложение находится на переднем плане и просто активность изменяется, тогда они также называются.

Пожалуйста, предложите, спасибо !!!

Ответы [ 5 ]

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

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

0 голосов
/ 04 января 2012

Наконец я нашел это сам.

Мне удалось написать базовый класс для всех видов деятельности, в которых установка и получение переменных в и из Intent выполняются соответственно. Поэтому, если приложение переходит в фоновый режим и позже выходит на передний план, переменная намерения не найдена, где я показал экран входа в систему, скорее входя в приложение.

Спасибо, все, кто предлагал подходы, дайте мне знать, если они пошли не так или нет. Спасибо @midoalageb тоже ..!

Спасибо

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

Я делаю нечто подобное, и мое решение, по общему признанию, является хакерским, но оно работает для меня.

Все мои действия всегда происходят из общего базового класса во всех моих приложениях.Я называю это ActivityBase, для справки (и это расширяет активность, конечно).В ActivityBase.onPause я сохраняю текущее время в миллис, и вы можете при желании сохранить имя производного класса, чтобы точно знать, какое действие было приостановлено последним.Если вам нужно запустить код, когда приложение находится в фоновом режиме и возвращается на передний план, вы можете проверить разницу текущего времени со временем, когда была приостановлена ​​последняя активность в вашем приложении.Если приложение все еще находится на переднем плане, разница не должна превышать максимальное время, необходимое для приостановки одного действия и возобновления следующего.Если оно больше, чем секунда или две (а это хакерская часть, вы выбираете произвольное измерение времени, которое означает «слишком долго, чтобы быть навигацией в приложении»), тогда вы можете вызывать любой код, который должен работать, когда ваше приложениевозвращается на передний план.

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

Попробуйте переопределить onRestart () класса активности.

Описание для onRestart () .

Надеюсь, это поможет ..

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

Я думаю, что вы можете установить логическую переменную в true, когда onPause() и onStop(), и проверить эту переменную в onResume(), чтобы показать диалог входа в систему или нет.Если вам нужен более настойчивый способ, вы можете сохранить его в общих настройках в onPause() и onStop и удалить его из общих настроек в onDestroy().Но обратите внимание, что сборщик мусора Android удалит ваше приложение из памяти, если другое приложение в фокусе нуждается в памяти.

...