안드로이드 개발 정보
(글 수 1,067)
앱 마무리 테스트를 하던 중.. 우연히 휴대폰을 가로로 들게 되었습니다.
강제 종료 팝업이 확 뜨네요... 이건 또 몬 일인이야....
질답게시판, 구글링을 해 본 결과... 방향 (orientation) 이 변경되면
activity 의 onCreate 가 다시 실행된다는 것을 알게 되었습니다.
하지만, 문제를 다 해결하면서 알게된 사실은.. onCreate 만 다시
실행되는 구조가 아니라..activity 가 재시작된다는 얘기네요.
즉, onDestroy() 실행되고...그뒤에 onCreate() 가 시작된다는거죠.
저의 경우는 앱이 시작하자마자, alertdialog 를 띄워 어떤 디비를
선택할지 물어보는 것이여서.. 선택 팝업이 뜨기 전에는
사용된 변수,클래스가 없었습니다.
그런데.. 앱 뜨고..선택 팝업 뜬 상태에서.. 방향을 바꾸니...에러가
생기는거였죠..
즉... onDestroy() 에서 아직 생성 안된 클래스를 해제하는 코드에서
문제가 있었습니다. 잘못된 습관이 엉뚱한 곳에 빛을 발한 순간이죠 ㅋㅋㅋ
그래서..onDestory() 에 코드들을 잘 정리해서.. 문제해결..
그 뒤에... 또 다른 문제가..방향을 바꿀 때마다.. 앱이 재시작되니까..
제가 테스트하면서도..짜증이 밀려오더라구요.
방향 바꿀때마다..하던 일을 다시 시작해야 하니까 말이죠.
"그냥가자" 님의 댓글로 해결했습니다.
<activity android:name=".youractivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
이상....가로 세로 전환 하는 처리에서...겪은 내용이였습니다.
누군가의 시간을 절약하고 스트레스에서 벗어날 수 있기를 기원합니다.
끝.
강제 종료 팝업이 확 뜨네요... 이건 또 몬 일인이야....
질답게시판, 구글링을 해 본 결과... 방향 (orientation) 이 변경되면
activity 의 onCreate 가 다시 실행된다는 것을 알게 되었습니다.
하지만, 문제를 다 해결하면서 알게된 사실은.. onCreate 만 다시
실행되는 구조가 아니라..activity 가 재시작된다는 얘기네요.
즉, onDestroy() 실행되고...그뒤에 onCreate() 가 시작된다는거죠.
저의 경우는 앱이 시작하자마자, alertdialog 를 띄워 어떤 디비를
선택할지 물어보는 것이여서.. 선택 팝업이 뜨기 전에는
사용된 변수,클래스가 없었습니다.
그런데.. 앱 뜨고..선택 팝업 뜬 상태에서.. 방향을 바꾸니...에러가
생기는거였죠..
즉... onDestroy() 에서 아직 생성 안된 클래스를 해제하는 코드에서
문제가 있었습니다. 잘못된 습관이 엉뚱한 곳에 빛을 발한 순간이죠 ㅋㅋㅋ
그래서..onDestory() 에 코드들을 잘 정리해서.. 문제해결..
그 뒤에... 또 다른 문제가..방향을 바꿀 때마다.. 앱이 재시작되니까..
제가 테스트하면서도..짜증이 밀려오더라구요.
방향 바꿀때마다..하던 일을 다시 시작해야 하니까 말이죠.
"그냥가자" 님의 댓글로 해결했습니다.
<activity android:name=".youractivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
이상....가로 세로 전환 하는 처리에서...겪은 내용이였습니다.
누군가의 시간을 절약하고 스트레스에서 벗어날 수 있기를 기원합니다.
끝.
2010.09.03 17:24:43
위 방법 대로 해버리면 가로 레이아웃이나 세로 레이아웃이 따로 되지 않고 같이 사용 되어 버립니다.
참고 하세요.
왠지 볼레로 님이 올려주신 자료로 만드시는게 맞을 것 같습니다.
2010.09.06 02:14:07
네, 가로 레이아웃만 준비하는 경우, 세로화면일때 가로 화면을 사용하지만,
세로 레이아웃을 준비하면, 세로레이아웃으로 보여집니다.
네비게이션 어플일 경우, 가로, 세로 전부 따로 있어야 하듯말입니다.
안드로이드에서는 화면전환을 하면 Activity의 저장&복원(제거&생성)의 과정을 거칩니다.
configChangs옵션을 쓰면, 이러한 과정을 무시하게 되는데, 볼레로님의 링크에 나온
onRetainNonConfigurationInstance 메소드를 override하면 좀더 화면전환을 부드럽게 사용할 수 있다고 합니다
2010.09.13 19:48:15
물론 가로 세로 리소스를 별개로 찾기도 하지만
우선순위에 따라 리소스를 로드합니다.
1. 가로 세로 지정한 리소스
2. 지정되지 않은 리소스
1번에서 못찾으면 2번에서 찾기 때문에
꼭 따로 저장할 필요는 없습니다. 물론 1번과 2번을 다 구분하기 힘들고 귀찮다면
그냥 1번으로 다 만들어 버리는게 속편할 수도 있고 에러도 적은게 사실이긴 합니다.
무조건 구분해야 한다는건 아닙니다.
그리고 onRetainNonConfigurationInstance 오버라이드 하는 방법을 소개하는 글에서
"그냥 맡기는 것"을 추천하고 있긴합니다. 마냥 좋기만 한 것은 아닌거 같습니다.
우선순위에 따라 리소스를 로드합니다.
1. 가로 세로 지정한 리소스
2. 지정되지 않은 리소스
1번에서 못찾으면 2번에서 찾기 때문에
꼭 따로 저장할 필요는 없습니다. 물론 1번과 2번을 다 구분하기 힘들고 귀찮다면
그냥 1번으로 다 만들어 버리는게 속편할 수도 있고 에러도 적은게 사실이긴 합니다.
무조건 구분해야 한다는건 아닙니다.
그리고 onRetainNonConfigurationInstance 오버라이드 하는 방법을 소개하는 글에서
"그냥 맡기는 것"을 추천하고 있긴합니다. 마냥 좋기만 한 것은 아닌거 같습니다.
그런데 위 방법 사용하면 Keyboard가 안 나오지 않나요?
http://developer.android.com/resources/articles/faster-screen-orientation-change.html
이 글도 꼭 같이 보세요 ^^