2013-07-09 56 views
3

我有一个主页替换活动,您可以在其中启动多个应用程序。当您点击主页按钮时,您将返回到我的主页替换活动。按下主页按钮时将运行哪种方法?

据我所知,点击主页按钮会创建一个启动主屏幕的意图,然后启动该意图(我可能是错的,如果我是我请纠正!)。如果是这种情况,我希望在主屏幕创建时运行onCreate()方法。另一方面,当您启动其他活动时,主屏幕会调用onPause()。所以回到它让我认为onResume()被调用。

如果有人可以为此提供一些启示,基本问题是当我点击主页按钮时onResume()onCreate()是否被调用,但欢迎其他详细信息,我正在处理那些利用这个重要和想要的东西了解很多。

+0

http://developer.android.com/guide/components/tasks-and-back-stack.html – Raghunandan

+0

呀,当家庭被放在后台,我的问题是什么当你点击主页和返回到主屏幕 – mike

+0

您可能要重写'onBackPressed()' – PatrickNLT

回答

8

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

正确的。

如果是这样的话,我希望每当创建

在主页屏幕上不一定要运行的onCreate()方法。如果它已经在运行,将会调用onNewIntent()

如果有人可以只提供一些启示此事,基本的问题是,是否的onResume()或的onCreate()当我点击主页按钮

任何时候被调用的任何活动返回从用户输入的角度来看前景,onResume()被调用。主屏幕在这方面应该没有什么不同。

onCreate()在活动创建时调用。现有的活动不是创建的,而是仅仅被带回到前台。如果触发该活动返回到前台的是startActivity()呼叫,则将使用onNewIntent()onResume()(通常为onStart())调用该活动。

+0

正是我需要的,谢谢 – mike

1

很简单,你只需要重写onAttachedToWindow()

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);   
} 

,然后轻松地赶上home键按下从http://nisha113a5.blogspot.fr/

希望这有助于

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

    if(keyCode == KeyEvent.KEYCODE_HOME) 
    { 

     //do some stuff 

    } 
}); 

走。

+3

应用不再收到主页按键被调用。这是为了防止劫持Home键。 – Karakuri

7

当下面的方法调用逐个在活动安装应用程序第一次

  1. 的onCreate()
  2. 在onStart()
  3. 的onResume()

之后当你按Home键然后下面的方法调用

  1. 的onPause()
  2. 的onStop()

注意:的onDestroy()方法按首页按钮后,不叫。

以下为演示目的的代码。首先在模拟器或设备中运行您的代码,然后单击HOME按钮以在您的控制台中检查结果。

package com.example.checkdataversion; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 

public class MainActivity extends Activity { 
    private static final String TAG = "main"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    Log.i(TAG, "oncreate"); 
    setContentView(R.layout.fragment_main); 
} 

@Override 
protected void onStart() { 
    // TODO Auto-generated method stub 
    super.onStart(); 
    Log.i(TAG, "onstart"); 
} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    Log.i(TAG, "onresume"); 

} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    Log.i(TAG, "onpause"); 
} 

@Override 
protected void onStop() { 
    // TODO Auto-generated method stub 
    super.onStop(); 
    Log.i(TAG, "onstop"); 
} 

@Override 
protected void onDestroy() { 

    super.onDestroy(); 
    Log.i(TAG, "ondestroy"); 
} 

}