2011-01-24 27 views
1

Android Bundle說明:Android Bundle = .NET Session []?

Bundle是Android維護和傳遞程序狀態的方式。該系統圍繞任何程序(以一系列活動爲特徵)可能在任何時候被搶佔的假設爲前提,如果系統資源不足,則可能隨後被殺害。爲了解決這個難題,只要活動被搶佔,就會保存一個名爲冰柱的Bundle。

與散列表或字典一樣,添加到Bundle的項目被賦予一個鍵,稍後用於檢索數據(使用數據類型特定的方法,如getCharacter(String key)和getParcelable(String key))。在創建活動時,請務必將任何重要的狀態信息保存到onFreeze中的冰柱上,以便在onCreate中恢復程序,如果它在掛起時被終止。

是否與.NET中的Session []相同?

回答

2

不完全,沒有。

在.NET中,您可以隨時隨地訪問狀態對象,並且可以確保在調用它時,您放置在其中的對象仍然存在。會話雖然過期,但除非在視圖狀態中保存了任何內容,否則該數據將丟失。

由於操作系統的特性,Android使用Bundle,它會保持你的應用程序「活着」在保存狀態的背景中,但是如果它認爲你的應用程序空閒並且它可以被殺死,你的應用程序釋放資源。在您的應用程序進程被終止之前,它會調用onFreeze()(現在更名爲onSaveInstanceState()),這會讓您有機會將數據保存到Bundle中,下次您的應用程序啓動時將傳遞給onCreate(這樣您可以再次初始化屏幕) 。

+0

So Bundle保持像字典那樣的數據。好。它保存多久?直到應用程序被殺害?更長 - 直到系統重啓?永久? – sandalone 2011-01-25 09:51:26