2014-01-04 2 views
1

Прочитав о важности сохранения информации, отличной от UI, в пункте . Я пытаюсь заменить код, который я использую для onSavedInstanceState с кодом для . Так я этот код, сохранение и восстановление в ArrayList в рамках savedInstanceState:onPause вместо onSaveInstanceState

public class SetUpPlayers extends Activity implements OnClickListener 

... 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.set_up_players); 

    if (savedInstanceState != null) 
       setUpArrayList = (ArrayList<SetUpListItem>) savedInstanceState.getSerializable("setUpArrayList"); 
    else 
       ... 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putSerializable("setUpArrayList", (Serializable) setUpArrayList); 
    super.onSaveInstanceState(savedInstanceState);  
} 

Как я могу использовать , чтобы добавить мой сериализованная ArrayList к savedInstanceState, что onCreate будет забрать? Или мне нужно будет сохранить и загрузить его из настроек?

+0

Не могли бы вы отправить код SetUpListItem? – elimirks

ответ

1

Вы уже сохранили свой setUpArrayList в папке состояния экземпляра. Этот пакет будет передан вашей деятельности в onCreate() и в onRestoreInstanceState() всякий раз, когда этот экземпляр Activity будет воссоздан. Это произойдет, если ваше приложение перейдет на задний план, и Android убьет процесс размещения вашего приложения, а затем пользователь вернется в ваше приложение (либо запустив его снова, либо выбрав его из списка «последние задачи»).

Однако, если пользователь выходит из вашей активности (например, с помощью кнопки BACK), а затем снова запускает вашу активность, состояние экземпляра, переданное в onCreate(), будет равно NULL. Если вы также захотите восстановить setUpArrayList в этом случае, вам нужно будет сохранить его в каком-то постоянном хранилище (база данных, общие настройки и т. Д.). В этом случае вы можете просто сериализовать setUpArrayList на String и записать это в постоянное хранилище (или вы можете использовать более структурированный подход, например XML или JSON). Вы должны сделать это в onPause(). Затем в onCreate() вы можете восстановить setUpArrayList из постоянного хранилища, если аргумент состояния экземпляра равен NULL.

+0

Спасибо. Я изменил его, поэтому он сериализуется в постоянное хранилище и проверяет JSON. – rwoodnz

Смежные вопросы