Есть ли способ предотвратить выполнение кода внутри onResume при возврате в приложение после нажатия кнопки «домой»?
Какой метод вызывается при нажатии кнопки дома? Я мог бы что-то отметить, когда нажата кнопка дома?
БлагодаряAndroid - Предотвратить onResume при возврате в приложение после домашней кнопки
ответ
После переопределения выше метода, теперь вы можете легко прослушать HOME нажмите клавишу в вашей деятельности с помощью OnKeyDown() метод.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Надеется, что это поможет
Привет, спасибо за ответ, но похоже, что это было удалено после Anroid 4.0 :( –
hmm that is right buddy. – sukhbir
но вы можете сделать это, проверив текущие запущенные приложения на Android. Вы можете сказать, что если ваша последняя задача, которая отображается при длинном нажатии кнопки «домой», то она была отправлена на задний план. Итак, в вашей onPause() активность, при которой вы пытаетесь обнаружить кнопку дома, вы можете проверить, было ли приложение отправлено на задний план. @Override public void onPause() { if (isApplicationSentToBackground (this)) { // Делайте то, что вы хотите делать при обнаружении нажатия на главный ключ } super.onPause(); } – sukhbir
нажав на кнопку Home создает намерение запуска Начального экрана, а затем начинает что Интно Correct.
Если это так, я бы ожидал, что метод onCreate() будет запускаться всякий раз, когда будет создан главный экран. Не обязательно. Если он уже запущен, он будет вызываться с помощью onNewIntent().
Если кто-то может просто предложить некоторое просветление в этом вопросе, основной вопрос заключается в вызове onResume() или onCreate(), когда я нажимаю кнопку «Главная» Каждый раз, когда любое действие возвращается на передний план с точки входа пользователя, onResume(). Домашние экраны в этом плане не должны отличаться.
onCreate() вызывается при создании активности. Существующие действия не создаются, а просто возвращаются на передний план. Если то, что вызвало действие для возврата на передний план, было вызовом startActivity(), действие будет вызываться с помощью onNewIntent() и onResume() (и обычно onStart(), если на то пошло).
Пользователи могут оставить свое приложение во всех видах различных способов. Нажатие HOME является только одним из них. Приходящий телефонный звонок покинет ваше приложение, вытаскивая список уведомлений, и нажатие одного из них покинет ваше приложение и т. Д. Во всех этих случаях, когда пользователь вернется в ваше приложение, вызывается onResume()
. Это стандартное поведение Android и сообщает вашему приложению, что оно теперь находится на переднем плане и видимо для пользователя.
Ваша архитектура ошибочна, если вам нужно знать, как пользователь возвращается в ваше приложение. Вероятно, вам нужно переместить код, который у вас есть в onResume()
, до onCreate()
или onNewIntent()
.
Спасибо. Я знаю это. onResume() вызывается после onCreate() и каждый раз, когда пользователь возвращается в приложение, но это не мой вопрос. Мой вопрос состоял в том, как я могу предотвратить вызов некоторого кода onResume(), когда пользователь возвращается в приложение после нажатия кнопки «домой», решение, вызываемое onStop(), вызывается при нажатии кнопки «домой» (или приложение закрывается в любым другим способом, как вы заявляли), поэтому, если я изменяю логическое значение на false при вызове onStop и проверяю, что boolean в onResume, когда приложение будет открыто, я могу сказать onResume выполнить код или не –
Um. ..на самом деле, нет. Если ваша активность запустит другое действие, также будет вызываться 'onStop()'. Поэтому я не вижу, как это вам поможет. –
Спасибо за помощь всем
Мне удалось решить это, создав логическое, executeOnResume, которое я делаю false каждый раз, когда вызывается onStop(), и приложение закрыто. Затем я проверяю состояние этого булева в onResume(), когда приложение открыто снова, чтобы выбрать, должен ли выполняться какой-либо код или нет.
OnStop()
//-----application stopped
@Override
protected void onStop() {
super.onStop();
//do not execute onResume code when app opened again
executeOnResume = false;
}
onResume()
//-----application resumed
@Override
protected void onResume() {
super.onResume();
//if true
if (executeOnResume) {
//do something
}
else {
//execute onResume true code the next time onResume is called. For example, returning from another activity
}
}
Что именно ваше требование? Можете ли вы объяснить подробно? –
В основном я не хочу, чтобы код, который у меня был в onResume, выполнялся после того, как пользователь вернулся в приложение после нажатия кнопки «домой». Если бы я мог сделать boolean executeResumeCode = false; когда нажата кнопка дома, а затем поставьте условие, чтобы проверить это, когда вызвано возобновление, я думаю, что это сработало бы –