Tôi có thể sử dụng savedInstanceState()
để lưu trạng thái khi xóa một đoạn, sau đó khôi phục trạng thái khi tôi bật đoạn ra khỏi ngăn xếp lại? Khi tôi khôi phục các mảnh từ ngăn xếp trở lại, gói savedInstanceState luôn luôn là null.savedInstanceState khi khôi phục đoạn từ ngăn xếp lại
Hiện tại, luồng ứng dụng là: đoạn được tạo -> đoạn bị xóa (được thêm vào ngăn xếp lại) -> đoạn được khôi phục từ ngăn xếp lại (gói savedInstanceState là rỗng).
Đây là mã có liên quan:
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);
}
Tôi nghĩ vấn đề là onSavedInstanceState()
không bao giờ được gọi khi đang được gỡ bỏ và được bổ sung để sao chồng. Nếu tôi không thể sử dụng onsavedInstanceState(), có cách nào khác để sửa lỗi này không?
Cảm ơn nhiều :) nó giải quyết vấn đề của tôi –
không chắc chắn đây là một ý tưởng tốt. Điều này có đánh bại mục đích phá hủy khung nhìn để giải phóng bộ nhớ nếu bạn lưu một tham chiếu đến nó? – craigrs84
Tôi thực sự không chắc chắn, vì tôi chưa chạy bất kỳ thử nghiệm trực tiếp nào. Tuy nhiên, suy nghĩ của tôi như thế này.Khi bạn khởi tạo tất cả các phần tử trong bố cục của mình, tiêu chuẩn để đặt hầu hết các phần tử đó là biến toàn cục, vì vậy nếu trong ví dụ trên tôi không thể tái chế Chế độ xem cơ sở vì tham chiếu, Android sẽ không thể tái chế bất kỳ Chế độ xem nào trong số này cũng có thể dẫn đến cùng một vấn đề với bộ nhớ. – AllDayAmazing