2012-09-27 79 views
3

我一直在研究應用程序類和保持對象狀態的方法,我在網上讀了很多東西,包括android文檔(生命週期,建議等) ),關於這個問題的許多問題/答案,以及其他的東西,仍然有一些疑問,我希望這部分對未來的發展非常明確。我想這是每個android開發者的常見問題,所以我想知道什麼經驗(而不僅僅是文檔)對此有所說過。所以我有一些問題:應用程序類和對象狀態

1-應用程序類可以殺死內存或初始化爲應用程序在前臺?只是,我有一個應用程序的子類與一些靜態變量保持狀態的情況下,我知道,如果應用程序去背景它可以被殺死的內存,然後重新啓動,但它可以發生在前臺?

2-如果應用程序內存可以在任何時候被操作系統擦除或初始化,那麼保持數據庫或文件中對象狀態的唯一可靠方法是? (真的希望不!!)

3-任何其他提示,可以幫助解決這個問題。

+1

另外,您的手機電池可隨時移除,無需通知。將數據提交給sharedpref,文件,數據庫或其他任何提前確定保留它們的內容。 – njzk2

+0

我不想保留我的數據,只有在應用程序生命週期的內存中有意義的數據,我不想保存它從來沒有 – labreu

回答

2

根據我的經驗,您對文檔的說明過於謹慎和過度思考。大多數應用程序不需要也不應該擴展應用程序。

1-只有在最極端的情況下,應用程序纔會在前臺被殺死。所以你現在應該忘記這部分,只是擔心你的應用程序本身。如果發生這種情況,用戶將從頭開始重新啓動您的應用程序。

2-狀態的對象,你應該保持對活動的生命週期(而不是應用)通過覆蓋的onSaveInstanceState(捆綁outState)和onRetainCustomNonConfigurationInstance()和的onCreate(捆綁savedInstances)和getLastNonConfigurationInstance()讀取它們的值回。這些方法是針對活動可能會被棄用的,我知道有些是,閱讀文檔,他們會告訴你哪些是碎片的替代品。使用碎片。此外,狀態可以通過intents/bundles從活動傳遞給其他人。

3-爲了保持持久性數據,您應該使用數據庫和SharedPreferences,活動狀態使用可用活動和片段回調。如果不知何故,你的應用程序有一些相當特殊的需求,你可以創建一個單例,但是當我說的時候相信我,99%的應用程序不需要。

希望它有幫助!

+0

是的,也許我過度使用,但這是因爲我'在我的最後一個應用程序中看到了一些奇怪的行爲,我在Application子類中有一些靜態變量,並且它工作正常,但是偶爾vars只是像初始化那樣,這就是爲什麼我開始搜索並且想知道它是如何工作的,無論如何,你是一個非常好的答案,你是對的,避免這種模型,爲未來的發展注意到 – labreu