2010-09-15 46 views
9

根據「應用基礎」文章的「組件生命週期」一節,onResume()總是在視圖變爲活動狀態時調用,與以前的狀態無關。Android - 記事本教程 - 生命週期 - 一些工作做了兩次?

在記事本教程,練習3,我已經發現了一些令人困惑的NoteEdit.java:
還有就是populateFields()的調用中的onCreate(),以及在的onResume()。
只有在onResume()纔有足夠的(甚至更好)嗎?

在這樣一個小例子,它不會做任何傷害,如果populateFields()進行兩次,但在一個更大的應用程序,東西可以是不同的...

感謝和問候,
馬庫斯·N.

+2

葉普,我認爲在onResume中調用它也應該更好。 – icyerasor 2011-03-06 17:40:45

+0

不是一個答案,但如果onStop被調用,然後onRestart,onCreate將不會被調用...仍然不能解釋爲什麼它被調用onCreate在所有nesides可能約定和可讀性 – CrackerJack9 2011-10-10 23:08:23

+0

onCreate是很好的初始化引用的東西,但是你想保存你正確注意到的onResume的狀態處理的大部分是適當的地方。 另外請注意,你應該在AsyncTask中做到這一點,以保持用戶的滿意! Android活動生命週期頁面上的圖表是最好的參考,如果您想嚴格考慮,請根據用戶切換屏幕等的正確組合下的某些細節來編程狀態機活動。 – 2011-10-12 12:02:45

回答

-1

我可以在兩個地方看到你需要它的地方,如果應用程序暫停,那麼你會需要它在onResume,如果你的進程被殺死或用戶導航回到活動,那麼你會需要它在onCreate,尤其是如果你正在做一些預處理。

每文檔....對的onResume(),他們建議使用它的重量輕通話不像的onCreate():

「活動的前景生命週期,直到到的onResume()的調用之間發生相應地調用onPause(),在此期間,活動在所有其他活動之前並與用戶進行交互,活動可以頻繁地在恢復狀態和暫停狀態之間進行 - 例如,當設備進入睡眠狀態時,活動結果是交付,當一個新的意圖交付時 - 所以這些方法中的代碼應該相當輕量級。「

N otepad應用程序可能需要一個變量聲明,如果該方法已被onCreate命中而不是在onResume()中重做。

+0

onResume始終調用(即使進程被終止並且活動被重新創建)。 – 2011-10-17 21:32:11

+0

是的,但用戶可能需要在onCreate之前做一些事情,比如佈局等,爲什麼你可能需要在那裏調用那個函數。 – JPM 2011-10-17 21:58:43

+0

對。 onCreate是實例化佈局等的正確位置。我只是說,如果調用onCreate,onResume將始終在它後面調用。 – 2011-10-17 22:40:20

1

從看Notepad3看,我會說你是對的。在onCreate()onResume()中,似乎沒有任何理由讓他們撥打populateFields()onResume就足夠了。