본문 바로가기

나의 플랫폼/안드로이드

[ Android ] 화면 전환 시 해결 방법

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
화면 전환을 했을 시!
종료 버튼을 눌렀을 시!
전화나 알람이 일어났을 시!

onCreate함수와 onDestroy함수가 다시 일어나는 불상사가 생깁니다.

당연 가만히 있으실 우리 구글양반들이 아니죠 ㅎㅎ

2가지 방법이 있습니다.

첫번째는 가장 간단한 방법

AndroidManifest.xml파일 내 activity 속성마다 이 한 문장만 넣어주면 됩니다.

<activity android:name=".Activity클래스명" android:configChanges="orientation|keyboardHidden"/>

 
이 속성은 뭔가 변화가 일어났을 때 화면을 재 실행하지 않고 고정 시킨다는 속성이 orientation이구요. 
뒤에  keyboardHidden은 다시 화면이 띄어졌을 때 키보드를 숨긴다는 속성입니다. 

그래서 이 두 속성을 넣어주게 되면 onCreate와 onDestroy함수를 재실행될 필요가 없어지죠!

onResume과 onPause는 다시 실행이 되니 참고하시면 좋겠네요.^^ 

 

 두번째 방법은 

뭔가 저장도 시켜야 하지만, 전체적으로 다시 실행할 필요가 있는 부분이 있을 겁니다.
그럴 경우에는 위와 같이 놓으면 변화하는 게 없으니  답답할 노릇이죠^^

그래서 준비되어 있는게 저장되어 있는 객체를 저장시켜주는 함수가 있습니다.

onRetainNonConfigurationInstance 함수입니다.

1. Configuration이 변경 될 때 onRetainNonConfigurationInstance()가 호출 되고, 여기에서 넘겨줄 Object를 설정.


2. onCreate에서 앞서 넘겨준 Object를 getLastNonConfigurationInstance()로 받아서 getLastNonConfigurationInstance()에서 아무 값도 반환 되지 않는다면 화면 회전이 아니라 처음 Activity가 start했다는 뜻이니 예외 처리를 잘 해줍시다. 

위와 같이 저장 시킨 데이터를 다시 사용하면 되는 거지요^^ 

 
 위 두 방법만 있으면 화면 전환이나 뜻하지 않은 상황에서 아무 문제 없이 코딩이 가능합니다.
좋은 자료가 됐으면 좋겠네요.

그럼 오늘도 즐코딩! 

출처 : http://komaneko.egloos.com/4374114