2011-05-30 66 views
15

我遇到問題了。 當我第一次啓動我的android應用程序時,在主要活動中調用onCreateonResume。但我只想被稱爲onCreate。Android onCreate onResume

我該怎麼辦?

+2

刪除onResume()如果你不want.it不會影響。 – Kakey 2011-05-30 11:29:40

+0

檢查這個答案可能是有用的:http://stackoverflow.com/a/8516056/265167 – 2011-12-15 17:22:25

回答

1

你不能做任何事情,因爲這是活動的生命週期是如何工作的。

一個圖,顯示了生命週期參見http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle

+1

好,謝謝..因此,如果的onResume叫任何時候也沒有辦法,使活動在一定的方式行動第一次訪問,並在另一種方式時被回叫..我是對的嗎? – Alessio 2011-05-30 12:44:54

+0

@Alessio是的,看看'onRestart()'方法。見@ Fenix的答案。 – 2013-10-14 00:03:37

1

,你可以在生命週期的活動展示活動之前總是調用的onResume API中看到的。 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

我想你可以做一個全局布爾值的第一次訪問並將其設置爲false。 然後重寫onResume並檢查變量。 如果爲false,則將其設置爲true並返回,如果爲true,則返回 ,請調用super.onResume。

應該工作,但我不知道這是否可以處理簡單,我沒有訪問SDK在這裏進行測試。

+0

我會盡力感謝! – Alessio 2011-05-30 12:47:34

42

根據SDK文檔,您所看到的是預期的行爲。查看活動文檔中的流程圖 - Activity Lifecycle

編程您可以通過保持一個實例成員跟蹤是否已的onResume之前被稱爲克服這個 - 它第一次被調用時,設置變量,例如返回

private boolean resumeHasRun = false; 

@Override 
protected void onResume() { 
    super.onResume(); 
    if (!resumeHasRun) { 
     resumeHasRun = true; 
     return; 
    } 
    // Normal case behavior follows 
} 
+0

當我嘗試執行此操作時,當我嘗試設置resumeHasRun = true時,會收到「Suspended(異常RuntimeException)」。有任何想法嗎? – proudgeekdad 2012-01-10 04:25:55

+6

除了這個,你應該使用Activity的onRestart()方法,它恰好用於該用例。 – 2012-03-12 12:03:10

+1

假設您的活動被停止了('onStopped()'),那麼@FenixVoltres是正確的,因此您應該使用'onRestart()'。 – 2013-10-14 00:01:02

12

正確的答案是使用ActivityonRestart()方法。這可能是你一直在尋找的東西。

+0

不一定。只有在活動停止時才調用onRestart()。 – anon 2012-09-11 01:57:14

+0

你說得對,但是上面問題的答案是將代碼從'onResume()'(也稱爲活動創建時調用)移動到'onRestart()',而不是,那是什麼意思。 – 2012-09-11 07:28:19

+1

@bowmanb正確,但不知道他的意圖,在大多數情況下,'onRestart()'是你想要的。 – 2013-10-14 00:02:54