마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

백그라운드에 오래있으면 static SharedPreferences 날라가는 문제입니다

0 추천
안녕하세요

제가 앱이 시작할때  SharedPreferences에 URL을 저장하는데요

백그라운드에 오래 놓거나 T wifi 같은 걸 잡으면 앱내의 SharedPreferences 와 static변수 값이 날라갑니다.

위의 원인은 확실하지않으나 데이터값이 날라가는건 확실한거같은데요

Activity가 백그라운드에서 오래 머물때 위와 같은 현상이 일어날수있나요?

또는 백그라운드에서 오래 있으면 다시 앱을 호출했을때 Activity가 다시 처음부터 호출 되는 경우가 있나요?

조언 부탁드립니다.
ㄱ나니 (280 포인트) 님이 2013년 2월 27일 질문

1개의 답변

0 추천
static변수값이 날라갔다는 것은 프로세스가 종료되고 다시 시작되었다는 것입니다.

안드로이드앱은 백그라운드에 있을 경우 메모리가 부족한 경우 언제든지 프로세스가 종료되고 다시 시작될수 있습니다. 안드로이드가 어떤 순서로 앱을 메모리에서 삭제할수 있는지는 아래 문서를 참조해보시기 바랍니다.

http://developer.android.com/guide/components/processes-and-threads.html

보통 오래 있으면 프로세스가 종료될 가능성이 높아질것이고 다른 앱들을 이것저것 많이 실행시켜도 종료될 가능성이 높아지겠죠. 프로세스가 종료되었다가 다시 시작될때 어떻게 액티비티가 동작하는지 액티비티 라이프사이클을 살펴보시구요. 이럴 경우 먼가 저장해야할 데이터가 있으면 onSaveInstanceState라는 메소드를 오버라이드해서 필요한 값들을 저장하실수 있습니다.

http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)

어떠한 상황에서 static 변수를 쓰셨는지 모르지만 static를 정말 써야할 상황이었는지 다시 검토해보시면 좋을듯 합니다. 보통 보면 static을 잘못 쓰는 경우가 많더군요.
회색 (21,340 포인트) 님이 2013년 2월 27일 답변
...