2013-04-23 34 views
9

docs關於Activity休閒狀態:是在佈局包含視圖的活動被重新創建時恢復的視圖的「標記」?

默認情況下,系統採用Bundle實例的狀態保存有關每個視圖對象 信息在你的活動佈局(如 文本值輸入到一個EditText對象) 。因此,如果您的活動 實例被銷燬並重新創建,則佈局狀態爲 已恢復到其先前狀態,並且沒有您要求的任何代碼。

docs爲View.setTag(對象)狀態:

設置與此視圖相關聯的標記。一個標籤可用於在其層次結構中標記 視圖,並且在 層次結構中不必是唯一的。也可以使用標籤來將數據存儲在視圖中,而不用訴諸於另一個數據結構。

我的問題是:如果我在活動的佈局設置在一個視圖中的代碼(即具有唯一的ID),並且隨後將活性是由系統破壞,隨後重建,將這一觀點,當重新,自動使用最初設置的對象I進行標記?

+0

雖然沒有嘗試,但從技術上講,沒有多大意義。 「對象」可以是任何東西,系統可以自殺,以恢復對它沒有控制的對象的引用(它不能包含在Bundle中,不清楚淺拷貝是否有意義等), – 2013-04-23 15:06:08

+0

系統預計會在稍後的日期重新創建活動,所以我可以看到它保留了對原始標記的引用。我會測試行爲並回報。如果這已被記錄在案,會很好。 – jph 2013-04-23 15:16:53

+0

請告訴我。 ;)順便說一下,'visibility'屬性將不會被存儲,而其他許多屬性都將被存儲。 - 它是一個'int'或什麼的,我會說好,但'Object'引用在活動被重新創建時將是無效的。但我很好奇你會發現什麼。 – 2013-04-23 15:22:04

回答

5

如果我在View的活動佈局中設置了一個標記(具有唯一的ID),然後活動被系統銷燬並隨後重新創建,重新創建時會自動標記該視圖與我最初設定的對象?

不,基於我對源代碼的閱讀。

系統預計會在稍後的日期重新創建活動,所以我可以看到它保留了對原始標記的引用。

這並不總是可能的,因爲保存的實例狀態Bundle需要跨進程邊界傳輸。

相關問題