안드로이드 개발 질문/답변
(글 수 45,052)
일반적으로 activity life cycle은
create start resume pause stop destroy 이렇게 되는데 (머 더 복잡하겠지만, 안드로이드 사이트에 나온 흐름도를 보면 대충 저렇죠)
근데, activity가 떠있는 상태에서 그냥 두면, 화면(액정)이 꺼졌다가, 다시 키면 당연히 activity가 보여야 정상입니다.
사실, 보이긴 보입니다. 문제는, 꺼진후 켜졌을때, 그동안 바뀐정보가 갱신이 안된다는 겁니다.
그래서 filewriter로 파일에 로깅을 해봤더니 좀 이상한걸 발견했습니다.
화면 갱신이 잘 될때는, create start resume......갱신갱신갱신(화면꺼짐)...갱신갱신 (화면켜짐) 이런데,
화면 갱신이 안되었을때는, create start resume....갱신갱신...(화면꺼짐) onpause onstop 끝
이렇게 onstop 나오고 그다음에 onrestart라던지, resume이라던지 것들이 다시 안나옵니다.
당근, activity에 onrestart()랑 onresume()에도 로깅하도록했고, file open을 새로 해줍니다.
혹시, 왜그런지 아시는분?
부탁드립니다.
ps. 이벤트를 안받겠다는게 아니라, 갱신을 위해 이벤트를 받아야합니다.
2010.11.12 11:12:27
화면 가로세로 전환, 키보드열기닫기랑,
화면꺼질때 onstop 호출되고, onresume안되는거랑 어떤 관계가 있는건지...
잘 이해가 안가요.
일단, 현재 어플의 설정은 보내주신것과 동일합니다. 즉 방향전환 및 키보드 여닫기시 이벤트 안울림으로 되어있습니다.
2010.11.12 12:28:53
남기욱//
답글 감사합니다.
그런데, 현재 문제는, onstop이 온후, onstart가 안된상태인데,
리시버를 받아봐야 의미가 없는거 같아요.
리시버를 액티비티와 별도록 실행시킨다면, 리시버가 화면이 켜질때마다, 프로그램을 무조건 켜주면 안되는거고.
프로그램이 떠있을때만 갱신시켜줘야하는데, onstop되고 onstart가 된것도 아니니, 구분이 안가고.
리시버를 해당 activity안에 맴버변수로 넣어줘도, onstop되서 죽어버렸으니, 당연히 반응이 없겠고...
화면이 다시 켜졌을때, 화면에 해당 activity가 분명 보이고 있는데, onstart나 onresume같은 이벤트가 발생 하지 않는거 자체를
해결해야할거같아요.




안드로이드 가로, 세로 전환시 onCreate(), onDestroy() 호출 막기
안드로이드 가로, 세로 전환시 onCreate/onDestroy가 호출되어
웹패이지를 다시 로딩하는 현상같은 것들이 발생한다.
이것을 막는 방법.
참조: http://www.androidpub.com/742429
참조: http://developer.android.com/resources/articles/faster-screen-orientation-change.html
AndroidManifest.xml 수정
전환을 막을 activity의 속성에
android:configChanges="orientation|keyboardHidden"
를 추가.
해당 activity의 .java 파일을 열어 다음의 메소드를 오버라이드.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
http://eddykudo.com/tag/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C