0

Есть ли способ предотвратить выполнение кода внутри onResume при возврате в приложение после нажатия кнопки «домой»?
Какой метод вызывается при нажатии кнопки дома? Я мог бы что-то отметить, когда нажата кнопка дома?

БлагодаряAndroid - Предотвратить onResume при возврате в приложение после домашней кнопки

+0

Что именно ваше требование? Можете ли вы объяснить подробно? –

+0

В основном я не хочу, чтобы код, который у меня был в onResume, выполнялся после того, как пользователь вернулся в приложение после нажатия кнопки «домой». Если бы я мог сделать boolean executeResumeCode = false; когда нажата кнопка дома, а затем поставьте условие, чтобы проверить это, когда вызвано возобновление, я думаю, что это сработало бы –

ответ

2

После переопределения выше метода, теперь вы можете легко прослушать HOME нажмите клавишу в вашей деятельности с помощью OnKeyDown() метод.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {  

    if(keyCode == KeyEvent.KEYCODE_HOME) 
    { 
     //The Code Want to Perform. 
    } 
}); 

Надеется, что это поможет

+0

Привет, спасибо за ответ, но похоже, что это было удалено после Anroid 4.0 :( –

+0

hmm that is right buddy. – sukhbir

+1

но вы можете сделать это, проверив текущие запущенные приложения на Android. Вы можете сказать, что если ваша последняя задача, которая отображается при длинном нажатии кнопки «домой», то она была отправлена ​​на задний план. Итак, в вашей onPause() активность, при которой вы пытаетесь обнаружить кнопку дома, вы можете проверить, было ли приложение отправлено на задний план. @Override public void onPause() { if (isApplicationSentToBackground (this)) { // Делайте то, что вы хотите делать при обнаружении нажатия на главный ключ } super.onPause(); } – sukhbir

0

нажав на кнопку Home создает намерение запуска Начального экрана, а затем начинает что Интно Correct.

Если это так, я бы ожидал, что метод onCreate() будет запускаться всякий раз, когда будет создан главный экран. Не обязательно. Если он уже запущен, он будет вызываться с помощью onNewIntent().

Если кто-то может просто предложить некоторое просветление в этом вопросе, основной вопрос заключается в вызове onResume() или onCreate(), когда я нажимаю кнопку «Главная» Каждый раз, когда любое действие возвращается на передний план с точки входа пользователя, onResume(). Домашние экраны в этом плане не должны отличаться.

onCreate() вызывается при создании активности. Существующие действия не создаются, а просто возвращаются на передний план. Если то, что вызвало действие для возврата на передний план, было вызовом startActivity(), действие будет вызываться с помощью onNewIntent() и onResume() (и обычно onStart(), если на то пошло).


Ссылка: Which method is run when Home button pressed?

0

Пользователи могут оставить свое приложение во всех видах различных способов. Нажатие HOME является только одним из них. Приходящий телефонный звонок покинет ваше приложение, вытаскивая список уведомлений, и нажатие одного из них покинет ваше приложение и т. Д. Во всех этих случаях, когда пользователь вернется в ваше приложение, вызывается onResume(). Это стандартное поведение Android и сообщает вашему приложению, что оно теперь находится на переднем плане и видимо для пользователя.

Ваша архитектура ошибочна, если вам нужно знать, как пользователь возвращается в ваше приложение. Вероятно, вам нужно переместить код, который у вас есть в onResume(), до onCreate() или onNewIntent().

+0

Спасибо. Я знаю это. onResume() вызывается после onCreate() и каждый раз, когда пользователь возвращается в приложение, но это не мой вопрос. Мой вопрос состоял в том, как я могу предотвратить вызов некоторого кода onResume(), когда пользователь возвращается в приложение после нажатия кнопки «домой», решение, вызываемое onStop(), вызывается при нажатии кнопки «домой» (или приложение закрывается в любым другим способом, как вы заявляли), поэтому, если я изменяю логическое значение на false при вызове onStop и проверяю, что boolean в onResume, когда приложение будет открыто, я могу сказать onResume выполнить код или не –

+0

Um. ..на самом деле, нет. Если ваша активность запустит другое действие, также будет вызываться 'onStop()'. Поэтому я не вижу, как это вам поможет. –

1

Спасибо за помощь всем

Мне удалось решить это, создав логическое, 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 

     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^