在我的應用程序中,我使用一個靜態變量來保存當前用戶ID。有一個很難重現此用戶標識簡單消失的錯誤。雖然它可能與應用程序加載期間如何設置此變量的錯誤有關(我仍然無法在受控環境中可靠地再現這種情況,所以我不確定發生了什麼),但我已經開始認爲這與如何從靜態變量回收內存有關(我之前沒有考慮過)。Android中的靜態變量和低內存 - 幾個問題
那麼,什麼時候我的靜態變量可以簡單的消失?
- 就我所知,如果操作系統報告內存不足 - 可以在應用處於前臺時發生靜態內存回收嗎?還是隻有背景?
- 有沒有任何可能的方式獲得回收靜態內存沒有低內存條件?我想有時變量消失,沒有應用程序甚至去背景,我不知道任何低內存事件發生(AFAIK低內存指的是整個操作系統,而不是應用程序的內存)
- 什麼是一種好方法來模擬靜態變量被操作系統收回以查看應用程序的行爲並隨後修復錯誤?
任何增加我的理解更清晰的東西將不勝感激。
謝謝。
他們最近有一個Android開發者「環聊」,他們在這裏觸及靜態變量和塊的主題。他們沒有專門回答你的問題,但總的來說,他們圍繞着你應該儘量避免使用靜態變量來傳遞信息的共識跳舞。鏈接到視頻:http://youtu.be/z1Gk5XUVLuE?t=17m –
我也想你的要點回答,但找不到更具體的東西。最後,我試圖重構我的代碼,以避免使用靜態,如果他們不是常量。還有一個Android [FAQ](http://developer.android.com/resources/faq/framework.html#3),建議僅對「非持久對象」使用靜態字段。 –
如何使用getter首先檢查ID是否已設置並進行初始化? –