可以使用savedInstanceState()
保存刪除片段時的狀態,然後在將片段從背堆棧彈出時恢復狀態?當我從後端堆棧中恢復片段時,savedInstanceState bundle始終爲空。savedInstanceState從堆棧中恢復片段
現在,應用程序流程是:片段已創建 - >片段已移除(已添加到後退堆棧中) - >已從後退堆棧中恢復的片段(savedInstanceState包爲空)。
下面是相關代碼:
public void onActivityCreated(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
Long playlistId = bundle.getLong(Constants.PLAYLIST_ID);
int playlistItemId = bundle.getInt(Constants.PLAYLISTITEM_ID);
if (savedInstanceState == null) {
selectedVideoNumber = playlistItemId;
} else {
selectedVideoNumber = savedInstanceState.getInt("SELECTED_VIDEO");
}
}
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(Constants.SELECTED_VIDEO, selectedVideoNumber);
}
我認爲這個問題是被刪除和被添加到後退堆棧時onSavedInstanceState()
永遠不會被調用。如果我不能使用onsavedInstanceState(),是否有另一種方法來解決這個問題?
非常感謝:)它解決了我的問題 –
不知道這是一個好主意。如果您保存對其的引用,這是否會破壞視圖以釋放內存的目的? – craigrs84
我其實不確定,因爲我還沒有運行任何直接測試。但是,我的想法是這樣的。在初始化佈局中的所有元素時,將大多數元素設置爲全局變量是標準的,因此如果在上述示例中由於引用而無法回收基本View,則Android將無法回收這些視圖中的任何一個都會導致與內存相同的問題。 – AllDayAmazing