0

有没有什么办法来防止在按下主页按钮后返回到应用程序内的onResume执行代码?
按下主页按钮时会调用什么方法?当主页按钮被按下时,我可能会标记一些东西?

感谢Android - 预防onResume返回到应用程序后,主页按钮

+0

究竟什么是你的要求吗? 你能详细解释一下吗? –

+0

我基本上不想在用户按下主页按钮后返回到应用程序后执行onResume中的代码。如果我可以使布尔executeResumeCode = false;当主页按钮被按下,然后把一个条件来检查这个时,简历被调用,我认为这将工作 –

回答

2

上述方法覆盖后,现在您可以轻松地使用的onkeydown()方法听HOME键在您的活动。

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

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

希望这将有助于

+0

嗨,感谢您的回复,但它看起来像这样已被删除后的Anroid 4.0 :( –

+0

嗯,这是正确的朋友。 – sukhbir

+1

但您可以通过检查在Android中当前运行的应用程序,以便做到这一点。你可以说,如果你是在长按home键显示近期的任务,然后将其发送到后台。 ,在你的onPause()的你可以检查应用程序是否已经发送到后台。@Override public void onPause(){ if(isApplicationSentToBackground(this)){ //做你想做的事在检测主键被按下时进行 } super.onPause(); } – sukhbir

0

攻的主页按钮创建一个意图启动主屏幕,然后启动该INTEN 正确的。

如果是这种情况,我希望在创建主屏幕时运行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()时,按home键后,用户返回到应用程序,该解决方案被认为的onStop()是当按下home键调用(或应用程序在关闭被称为你说任何其他方式),因此,如果我改变一个布尔值,为假时的onStop被调用,检查布尔中的onResume当应用程序被重新打开,我就可以告诉的onResume执行一些代码或不 –

+0

庵。 ..不是真的。如果你的活动开始另一个活动,'onStop()'也会被调用。所以我真的不明白这对你有什么帮助。 –

1

感谢大家的帮助

我设法通过创建一个布尔值,executeOnResume,这是我作出虚假每次的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 

     } 
    } 
相关问题