2014-03-06 31 views
0

鑑於只有onResume()保證運行,並且onPause()後狀態將丟失。 所有的初始化應該在onResume()而不是onCreate()?是否所有的初始化都應該在onResume()而不是onCreate()中?

例如,

myDbHelper = new MyDbHelper(getApplicationContext()); 

正是在的onCreate()。我應該將其移動到onResume()? 我有一個listAdapter。是否應該在onResume()中創建?

對於單身人士,是的,他們會以不同的方式執行see但是其他變量呢?

android docs

回答

1

現在我的工作與主題相關的東西。我強烈建議您將所有變量重用到onResume()中。因爲您可以完成()您的活動B,並且爲此活動A中調用的唯一方法是onResume()。也可以使用null模式對象來避免變量的空指針異常。

+0

'null pattern object'是什麼? '將所有變量重用到onResume()'是什麼? – likejiujitsu

+0

只是簡單的模式,以避免nullPointerException如果(變量== null){/ /在這裏做點什麼} –

+0

以及如果你使用INT確保不是0 .... –

1

並不總是 - 當onPause()事件觸發時,如果活動暫時失去焦點(如某些彈出事件),onResume()會被觸發,然後再次獲得焦點(從而觸發onResume())。在這種情況下,如果你已經初始化了onResume()中的變量,它們將在這個時候重新初始化,你將失去先前的值。

我可以想到你在onResume()中做什麼的最好的例子是當你設置一個BroadcastReceiver時 - 你不希望接收者在警報到達前臺時觸發某些東西(你得到大概的概念)。

+0

我不明白你的最後一句話 - 你能澄清?如果接收者已註冊,則在應用程序暫停時它不會丟失。 – likejiujitsu

+0

就像我說的 - 這是一個例子。想象一下當一個特定的動作被廣播時,你的應用程序可以通過踢一個新的事件來響應。現在你突然出現一個彈出窗口 - 很可能是緊急事件。現在onPause()已經被觸發,但是如果接收方沒有在這裏取消註冊,它將啓動新的事件,從而可能會消除有關您預計會響應的緊急事件的警報。 onPause()發生在別的東西突然出現在前臺時(或者需要用戶經常更新的東西)。 – ucsunil

+0

在這個時候,你不想殺掉這個事件是否正確?我希望這是有道理的。另外如果你有興趣,你可能想看看Commonsware的Android書籍中的編碼示例,他們遵循這種模式。雖然他們沒有明確地提到這一點,但我發現,如果一個事件是由Receiver觸發的,那麼在使用AlertDialog時他們會被殺死。這只是一個提示。根據您的需要,您可以按照您喜歡的方式實施它。 – ucsunil

相關問題