2013-11-26 46 views
0

我有这样的代码应用程序调用的onPause()的时候我打电话super.finish()

@Override 
protected void onResume() { 
    super.onResume(); 
    if (Config.SPLASH_ENABLED) 
    { 
     mHandler = new Handler(); 
     mHandler.postDelayed(mRunnable, SPLASH_DISPLAY_LENGTH); 
    } 
    else 
    { 
     doLogin(); 
    } 
} 

所以,当我按下后退按钮关闭它的第一个活动,但随后开始第二个这样我就可以启动这个在同一时间超过1个应用程序。然后我决定重写onBackPressed()方法。

@Override 
    public void onBackPressed() { 
     mHandler.removeCallbacks(mRunnable); 
     super.finish(); 
    } 

它没有帮助。重写onPause()方法这样

@Override 
    protected void onPause() { 
     mHandler.removeCallbacks(mRunnable); 
     super.onPause(); 
    } 

后它的工作,但我实在无法理解。为什么它覆盖onPause()方法后?

回答

0

activity lifecycle

当你打电话完成内部调用onPause,onStop和onDestroy;比定义每个状态组合的调用更简单。

+0

但是,如果我在onBackPressed()中为处理程序调用removeCallbacks(),那么为什么它会启动第二个活动? –

+0

SPLASH_DISPLAY_LENGTH是多少?也许是很小的,有时你可以在执行线程的动作之前按回键。 – Narkha

+0

它等于1500毫秒。好吗? –

相关问题