안녕하세요
안드로이드를 막배웠더니 변수관리를 잘못하네여;;
Activity 에서 전역변수를 사용할 경우
액티비티 시작 -> HomeKey 를 눌러서 -> 다른 앱을 실행 -> 다시 돌아왔을때 -> Activity 전역변수 들이 초기화 되는 현상
안드로이드에서 Static 변수를 사용 할 시에 메모리가 부족하면 전역변수의 값들을 초기화 하는 문제가 발생한다고합니다.
그래서 이 문제를 해결하기위해
1.onSaveInstanceState onRestoreInstanceState
2. extends Application 을 상속받아서 Activity 에선언하는법
3. parcelable 을 사용하는법 (이거는 초기화되는지 되는지 안되는지 정말궁금합니다....)
관련글
http://csjung.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Process-%EC%99%80-Static
http://thdev.net/m/post/view/id/364
http://unikys.tistory.com/194
앱을 실행중 홈을 눌렀을경우 변수들이 초기화되는 문제들을 방지 또는 다시 복원하고 싶습니다.
정말 확실한 방법이 있을까요? ㅠㅠ
알려주세요 고수님들
Activity가 background로 갔을땐 언제든지 초기화될 수 있다고 가정하고 앱을 만드셔야 합니다.
onCreate에서 파라미터인 Bundle을 보고 null이면 처음 생성되는 activity라고 가정하시고
null이 아니면 원래 떠있던 앱이 백그라운드로 갔다가 다시 복원되는 중이라고 가정하시고 적절하게 상태를 복원하셔야 합니다.
1-2-3 방법 모두 초기화를 근본적으로 막는 방법이 아닙니다. 그리고 초기화를 막을 방법은 없습니다.
그러므로 만약 앱에서 동적으로 생성되는 어떤 정보를 보관하고자 한다면 정적 변수를 사용해서는 안됩니다.
dev_아마 님의 말씀처럼 shared preference를 이용해서 변수를 저장하시는 방법을 추천드립니다.
당연한 얘기지만 이건 onPause()에서 구현되어야지 onSaveInstanceState() 에서 구현되서는 안됩니다.
껏다 켜졌을 때 살아있어야 할 정보라면 shared preference를 사용해보세요.
단순히 홈을 눌렀다고해서 모든 데이터들이 지워지는게 아닙니다. 다른작업을 통해 메모리가 부족해졌기 때문에 지워졌겟죠..
전화를 받는다거나 하는 정도 수준은 지워지지 않을거에요.