리스트 뷰를 보여주는 Activity A에서 DB에 대한 Cursor를 갖고 있습니다.

Activity A에서 새로운 Activity B를 startActivity하여 실행합니다.

추후 Activity B에서 finish()를 하면 원래 Activity A로 돌아오게 됩니다.

여기서 바로 Activity B를 다시 startActiviy해 주면 StaleDataException이 발생합니다.

이 Exception이 발생하는 이유를 안드로이드 레퍼런스에서 찾아보니

"This exception is thrown when a Cursor contains stale data and must be requeried before being used again. "

라는 설명이 있네요.

아마 새로운 Activity를 실행하면서 Activity A 가 Pause 상태로 돌아가서,

startManagingCursor 메소드 혹은 GC가 Cursor 참조를 close 한 것은 아닌가 하는 추론을 하게 되었는데요..

제 추론이 맞다면 Activity A 가 pause 상태에서 resume 상태로 돌아올 때,

Activity에서 제공하는 onResume은 기본적인 View를 되돌려 주는 기능만 하는 것 같은데요..

몇몇 상태를 복원해 주는 프로시저를 포함하는 오버라이딩된 onResume 메소드를 구현해야 하는 것이 아닌가 하는 생각이 듭니다.


1줄 요약.

제 추론이 맞는지요.. 찝찝해서요 ㅡㅡ;