7

안드로이드에서 화면 방향이 (가로 방향과 세로 방향 사이에서) 바뀌면 onCreate 메서드가 호출됩니다. 제대로 처리되지 않으면 결과가 너무 단순 해져서 전체 활동이 다시 생성됩니다. 동일한 정보를 모두 보유하십시오.Android : 효율적인 화면 회전 처리

이 문제를 해결하는 몇 가지 방법을 알고 있지만 가장 효율적인 방법에 관심이 있습니다.

1) 메서드를 무시하고 비워 두어 방위 변경을 처리하겠다는 내용을 알립니다.

2) onSaveInstanceState()을 무시하고 여기에 데이터가 이러한 모든 옵션은)는 데이터의 묶음을 만들고 분명히 onSaveInstanceState()

로 보내드립니다 onPause()을 무시 onCreate()

3에서 다시 채워에 저장, 하지만 하나가 더 나은 연습 (소형, 중형, 많은 양의 데이터)

감사합니다 인

+1

한 가지 방법은 활동을 다시 만들지 않고 세로와 가로 레이아웃을 전환하는 것입니다. 내 대답을 확인 [여기] (http://stackoverflow.com/questions/7749675/how-to-stop-changing-the-orientation-when-a-progress-bar-is-spinning-in-android/7749727#7749727) –

+0

이 방법은 멋지게 작동하는 것처럼 보이지만,'res/layout-land' 폴더를 사용하여 레이아웃의 자동 변경을 사용할 수 있기를 원합니다. 물론 간단한 활동을하기에는 너무 많은 오버 헤드가 아니라면 말이다. – Sababado

+0

글쎄,이 자동으로 레이아웃을 변경합니다, 당신은 단지 그 코드에있는 contentview를 변경해야합니다. –

답변

13

일부 장치 구성을 변경할 수 있습니다 (화면 방향, 키보드 가용성 및 언어와 같은) 런타임 동안. 이러한 변경이 발생하면 Android가 실행중인 작업을 다시 시작합니다 (onDestroy()이 호출 된 후 onCreate()이 뒤따 랐음).

  • 제대로 다시 시작을 처리하려면, 당신의 활동 이 응용 프로그램에 대한 데이터를 저장할 수 있도록 그것은 당신의 활동을 파괴하기 전에 안드로이드 onSaveInstanceState()를 호출 에, 정상적인 활동의 라이프 사이클을 통해 이전 상태를 복원하는 것이 중요합니다 상태. 그러면 은 onCreate() 또는 onRestoreInstanceState() 동안 상태를 복원 할 수 있습니다.

그러나 응용 프로그램을 다시 시작하고 많은 양의 데이터를 복원하면 값이 비싸고 사용자 환경이 좋지 않을 수 있습니다.

  1. Retain an object during a configuration change

    당신의 활동이 때 구성 변경 다시 시작,하지만 활동의 새로운 인스턴스에 상태 객체를 수행 할 수 있도록 허용 : 이러한 상황에서, 당신은 두 가지 옵션이 있습니다.

  2. Handle the configuration change yourself

    방지 특정 구성을 변경하는 동안 활동을 다시 시작에서 시스템,하지만 당신은 수동으로 필요한 활동을 업데이트 할 수 있도록 구성 변경을 수행 할 때 콜백을받을 수 있습니다. 단지 레이아웃을 변경하기위한이 당신의 필요에 따라 경찰 내 생각 :

그래서, 응용 프로그램과 데이터 조작 및 사용자 경험의 해안 당로서 당신은

편집 .. 당신을 위해 최선을 선택할 수 있습니다 을 사용하고 변경해야합니다.

+0

이것은 파편에 어떻게 적용됩니까? –