2013-07-09 43 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"); 
} 

}