안드로이드 개발 질문/답변
(글 수 45,052)
저는 DB및 각종 주요 static 객체들을
메인 Activity의 onCreaet 안에서 처리 합니다. 주요 시스템 객체들이 Context를 필요로 하기 때문입니다.
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OS.init(this);
Define.init(this);
OS의 버그인지 저의 이런 개발 방식이 문제인 것인지.
어플을 죽이지 않고 홈버튼을 눌러 나간후 당분간 있다가
어플을 실행하면 마지막 Activity가 뜹니다. 하지만
각종 중요 static변수들이 초기화가 안되어 있습니다.????!!!!!
퐝당한 일이 일어나더군요.
저와 같은 경험을 가지신 분들이 분명히 있을 거라고 의심하지 않습니다.
잘못된 개발 방법 인가요?
골치 아프네요. init 메소드가 과부하 메소든가요?
어지간 해서는 발생하지 않을 증상이긴한데, 로직자체에 빈틈이 있긴 있어보이네요
먼저, init이 호출되고 아직 종료가 안된 시점에서 home으로 나간 후 다시 resume 될 때
님이 말씀하신 증상이 일어날 수 있죠
추가로 init이 super.onCreate 다음에 있으니...
프래임웍은 onCreate callback이 정상적으로 callback 되었으니 후속 절차를 밟을텐데(다음 resume을 호출하거나...)
님의 init 이 안끄나서 돌고 있다면 또 그런 증상이 일어날 수 있죠.
일반적으로 Activity 레벨에서 필요한 초기화 작업을 Activity onCreate에서 해주시구요
App 관점에서 필요한 초기화는 Application Class를 상속하여 따로 구현하신후 onCreate에 넣어주세요
그럼 어플이 최초 실행될 때 가장 먼저 불리어 져서 편합니다.