2013-03-27 85 views
45

任何人都可以給我一個例子,在Android中使用onResume()如何使用onResume()?

另外,如果我想在另一個執行結束時重新啓動活動,哪個方法執行 - onCreate()onResume()

如果我想更新數據,我怎麼把它在onResume()?

+0

只要您從呼叫或其他內容導航回活動,就會調用onResume()。您可以像onCreate()一樣覆蓋onResume方法並執行任務。 – 2013-03-27 12:25:02

+0

[This](http://www.herongyang.com/Android/Activity-onCreate-and-Callback-Methods.html)可能會幫助您更好地瞭解Android應用的生命週期。 – TronicZomB 2013-03-27 12:27:34

+2

Android開發者文檔中解釋了調用這些方法的順序:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle – Michael 2013-03-27 12:28:05

回答

39

重新啓動應用程序將調用OnCreate()

當它暫停時繼續應用程序將調用OnResume()。從https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle的官方文檔中,下面是活動生命週期的圖表。

the Android activity lifecycle, from https://developer.android.com/images/activity_lifecycle.png on https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

+1

使用超鏈接提供鏈接。 – 2013-03-27 12:28:22

+0

鏈接有時給我概率。我不知道爲什麼 – 2013-03-27 12:29:58

+2

我不建議手動調用任何作爲Activity生命週期一部分的方法:),這可能會導致很多問題。 – Cata 2013-03-27 13:01:12

76

該重新啓動的任何活動具有第一執行其的onResume()方法。

要使用此方法,這樣做:

@Override 
public void onResume(){ 
    super.onResume(); 
    // put your code here... 

} 
3

onResume()是所謂的整個activity lifecycle的方法之一。 onResume()onPause()的對應部分,在任何時候活動從視圖中隱藏時被調用,例如,如果你開始隱藏它的新活動。當隱藏的活動重新顯示在屏幕上時,將調用onResume()

你在問什麼方法是用來重新開始一個活動。當活動首次創建時調用onCreate()。在實踐中,大多數活動通過一系列調用onPause()onResume()來保持在後臺。如果一個活動通過調用onStop()第一次完全停止,然後又恢復生命,那麼它只有在「onRestart()」才真正「重新啓動」。因此,如果您實際上沒有停止使用onStop()的活動,那麼您將最喜歡使用onResume()

在上面的鏈接中閱讀android doc以更好地理解不同生活方式之間的關係。不管使用通用格式最終生成的生命週期方法是否相同。您必須重寫標準方法幷包含您的代碼,即在評論部分中您想要的活動。

@Override 
public void onResume(){ 
//will be executed onResume 
} 
+0

當我們點擊視圖中的一個項目時調用onResume()方法嗎? – 2017-07-02 11:52:24

+1

單擊一個項目不一定會調用onResume。如果該視圖被隱藏並恢復,或者在完全創建之前初始加載,則將調用onResume方法。 – Rarw 2017-07-07 02:25:56

23

瞭解將有所有您的活動覆蓋了生命週期方法,並把一個斷點(如果模擬器檢查),或在他們中的每一個日誌的最佳方式。你會知道哪一個被調用。

就像擾流板一樣,onCreate()被首先調用,那麼如果您通過主屏幕或啓動另一個活動來暫停活動,則會調用onPause()。如果OS在此期間破壞活動,則onDestroy()被調用。如果你恢復應用程序,並且應用程序已被銷燬,onCreate()將被調用,否則onResume()將被調用。

編輯:我忘了onStop(),它在onDestroy()之前被調用。

做我提到的練習,你會有更好的理解。

+1

我一直在尋找這樣一個詳細的解釋一段時間,這真的幫助我創建完美的應用程序活動週期。謝謝。 – 2016-04-09 04:42:07

+0

不客氣:-) – noob 2016-04-13 06:28:24

+1

很好的解釋! +1 – powernit 2016-04-25 19:09:30

7

大多數以前的答案在解釋如何,爲什麼和何時使用onResume()做得很好,但我想補充一些關於重新創建Activity的內容。

我想知道如果我想在其他執行的onCreate()或的onResume()

什麼方法exectuion年底重新啓動活動答案是onCreate()然而,決定何時要真正重新創建它,你應該問自己需要重新創建多少Activity。如果它是適配器中的數據,比如列表中的數據,那麼您可以撥打adapter上的notifyDataChanged()來重新填充adapter,而不必重繪所有內容。

此外,如果您只需要更新某個views但不是全部,那麼在需要更新的view(s)上調用invalidate()可能更有效。這將只會重新繪製views,並可能允許您的應用程序運行更順利。我希望這可以幫助你。

+0

謝謝。我會嘗試使用notifyDataChanged() – Zizou 2013-03-27 13:23:42

+0

不客氣。很高興我能幫上忙。 – codeMagic 2013-03-27 13:25:37