안녕하세요.

문제는 어플을 내려놓고 다른 작업을 하던 중 다시 앱을 켰을 때

메모리가 죽어서 읽어왔던 데이터들이 초기화가 되어 있는 모습을 발견했을 때 발생하였습니다.

싱글턴으로 불러와서 사용하였는데, 싱글턴마저 죽어버리니 대책이 없더군요;

그러던 중 Bundle로 저장되는 InstanceState를 발견하였습니다.

그래서 데이터를 불러와 Bundle로 저장하고 onSaveInstanceState() 에서

super.onSaveInstanceState(GlobalData.getInstance().baseData());

하였으나 저장되지 않더군요.


여기서 질문! A 액티비티에서 B 액티비티로 넘어갈 때 onSaveInstanceState()가 호출됩니다.

이 때 저장된 번들은 B 액티비티에서 onCreate를 통해 들어오는 savedInstanceState에 들어오지 않던데,

원래 액티비티가 틀리면 번들을 따로 쓰나요?


뭐 여튼 전 불러온 데이터가 커서 그런가? 하고

다른 방법으로 테스트를 해봤습니다.

onSaveInstanceState(Bundle state)에서

state.putString("field", "none");

super.onSaveInstanceState(state);


역시나 B 액티비티의 onCreate에 번들이 안들어오더군요. null입니다.

하여 위의 질문의 요지를 의심하며 어플을 띄운 후 홈버튼을 눌러봤습니다.

onSaveInstanceState에 잘 들어가더군요. 그리고 field키의 none 문자열을 저장했습니다.

그리고 다시 어플을 띄운 후 다시 홈버튼을 누르고 들어간 onSaveInstanceState에서

인자로 넘어온 state가 비어있더군요.(번들 객체는 만들어진 상태이지만 저장했던 문자열도 없이 비어있습니다.)

원래 onSaveInstanceState가 호출되면 매번 새로운 번들 객체가 넘어오는 건가요?

lifecluee@gmail.com