안드로이드 개발 질문/답변
(글 수 45,052)
현재 뮤직플레이어를 개발중입니다.
이클레어에서 개발할 때는 문제가 안됬었는데..
프로요에서 개발하니까 가로 세로 변환시 문제가 생기네요..
인터넷에 뒤지니까 가로 세로 변환시 액티비티가 죽었다 생성되는 사이클
즉 onSaveInstanceState -> onPause -> onDestroy -> onCreate -> onRestoreInstacneState -> onResume
순서대로 액티비티가 재생성되는 것을 확인하고
onSaveInstanceState에 필요한 환경을 저장하고 onCreate에 이 환경을 읽어서 다시 만들어 주었는데요
개발을 하다 보니까 저장할 것들이 많이 생기다 보니 소스도 지져분해지고 계속 이렇게 관리하면 힘들 것 같아
질게에 올리게됬습니다.
AndroidManifest.xml 의 수정으로 이 문제를 해결할 수 있는 방법이 있을 것 같은데.. 혹시 아시는 분 계시나요?
아니면 다른 간단한 방법으로 이를 해결하실 수 있는 방법이 있나요?
2010.08.19 17:44:23
간단한 방법은 가로를 죽이는겁니다.. 퍽;
<activity android:name="Activity" android:screenOrientation="portrait">
2010.08.19 18:13:10
AndroidMenifest.xml의 Activity 속성에 android:configChanges="orientation|keyboardHidden"을 주시고, 엑티비티 자바 소스에서 onConfigurationChanged 메서드를 오버라이드해서 생성해주시면 됩니다.
2010.08.19 23:52:34
dcmru님의 답변이 맞습니다.
근데 글쓴분께서 이클레어 프로요 얘길 하셔서 드리는 말씀인데...
버전과는 상관없고 아마도 님의 프로젝트가 진화하면서 생기는 문제일겁니다.
이클레어와 프로요 모두 전환할때 적어주신 생명주기를 거쳐가거든요....
dcmru님께서 적어주신 속성을 추가하면 물론 액티비티 재시작이야 안하겠지만
만약 가로모드와 세로모드가 레이아웃이 심하게 다르다던가 하면 코드가 비슷비슷해질겁니다.
물론 그건 프로젝트에 의존적인 측면이 커서 장담은 못하지만요.
근데 글쓴분께서 이클레어 프로요 얘길 하셔서 드리는 말씀인데...
버전과는 상관없고 아마도 님의 프로젝트가 진화하면서 생기는 문제일겁니다.
이클레어와 프로요 모두 전환할때 적어주신 생명주기를 거쳐가거든요....
dcmru님께서 적어주신 속성을 추가하면 물론 액티비티 재시작이야 안하겠지만
만약 가로모드와 세로모드가 레이아웃이 심하게 다르다던가 하면 코드가 비슷비슷해질겁니다.
물론 그건 프로젝트에 의존적인 측면이 커서 장담은 못하지만요.
2010.08.20 15:03:39
keyboardhidden은 빼시면 안되구요....
android:configChanges="orientation|keyboardHidden" 를 지정하는 것은
두가지 변화에 대해 엑티비티의 재시작을 하지 않고 onConfigurationChanged 메소드로 빠지겠다는 정의입니다.
따라서 재시작 하는 생명주기를 따르지 않는거죠.
가로모드 키보드 사라지는거 유지하는것은 답이 없어보이네요.
다시 띄우는게 답이 될텐데 Focus가 있다고 키보드가 떠있는것도 아니고...
전 그냥 포기하고 모드 바뀌면 무조건 숨겼습니다.
일관성 측면에서는 낫긴하죠.
android:configChanges="orientation|keyboardHidden" 를 지정하는 것은
두가지 변화에 대해 엑티비티의 재시작을 하지 않고 onConfigurationChanged 메소드로 빠지겠다는 정의입니다.
따라서 재시작 하는 생명주기를 따르지 않는거죠.
가로모드 키보드 사라지는거 유지하는것은 답이 없어보이네요.
다시 띄우는게 답이 될텐데 Focus가 있다고 키보드가 떠있는것도 아니고...
전 그냥 포기하고 모드 바뀌면 무조건 숨겼습니다.
일관성 측면에서는 낫긴하죠.