빠른 배경
기본적으로 Android에서 특정 키 구성 변경이 발생하는 경우 (일반적인 예는 방향 변경), Android는 실행중인 활동을 완전히 다시 시작하여 해당 변경에 맞게 조정합니다.
android:configChanges="keyboardHidden|orientation"
AndroidManifest에서 정의 할 때 Android에 다음과 같이 말합니다. "키보드를 뽑거나 휴대 전화를 회전 할 때 기본 재설정을 수행하지 마십시오.이 문제를 직접 처리하고 싶습니다. 예, 내가하는 일을 알고 있습니다 "
이것이 좋은가요? 곧 보자 ...
걱정 마?
당신이 시작하는 전문가 중 하나는 다음과 같습니다.
당신의 활동이 회전에 대해 걱정할 필요가 없습니다
많은 경우에 사람들은 방향 변경 ( "회전")으로 인해 오류가 발생하면 간단히 입력하여 문제를 해결할 수 있다고 잘못 믿습니다. android:configChanges="keyboardHidden|orientation"
.
그러나 android : configChanges = "keyboardHidden | orientation"은 반창고에 지나지 않습니다. 실제로 구성 변경을 트리거 할 수있는 여러 가지 방법이 있습니다. 예를 들어 사용자가 새 언어를 선택하면 (예 : 로캘이 변경됨) 방향 변경과 같은 방식으로 활동이 다시 시작됩니다. 원하는 경우 모든 다른 유형의 구성 변경 목록을 볼 수 있습니다 .
편집 : 더 중요한 것은 hackbod 가 의견에서 지적했듯이 앱이 백그라운드에 있고 안드로이드가 메모리를 제거하여 메모리를 확보하기로 결정하면 활동이 다시 시작됩니다. 사용자가 앱으로 돌아 오면 Android는 다른 구성 변경이있을 때와 동일한 방식으로 활동을 다시 시작하려고 시도합니다. 당신이 그것을 처리 할 수 없다면-사용자는 행복하지 않을 것입니다 ...
다시 말해, 사용 android:configChanges="keyboardHidden|orientation"
은 "걱정"에 대한 해결책이 아닙니다. 올바른 방법은 활동을 코딩하여 다시 시작하는 Android에 만족하도록 활동을 코딩하는 것입니다. 이것은 길 아래로 도움이되는 좋은 습관이므로 익숙해 지십시오.
언제 사용해야합니까?
언급했듯이 뚜렷한 이점이 있습니다. 회전을 직접 처리하여 기본 구성 변경 사항을 덮어 쓰면 작업 속도가 빨라집니다. 그러나이 속도에는 편의가 제공됩니다.
간단히 말해 세로 및 가로 모두에 동일한 레이아웃을 사용하는 경우 덮어 쓰기를 수행하는 것이 좋습니다. 액티비티를 완전히 새로 고침하는 대신 나머지 공간을 채우기 위해 뷰가 이동합니다.
그러나 어떤 이유로 기기가 가로 방향 일 때 다른 레이아웃을 사용하는 경우 Android에서 액티비티를 다시로드한다는 사실은 올바른 레이아웃을로드하기 때문에 좋습니다. [그런 액티비티에서 재정의를 사용하고 런타임에 마법의 재 레이아웃을하고 싶다면 ... 행운을 빌어 요-간단하지는 않습니다.]
빠른 요약
꼭 android:configChanges="keyboardHidden|orientation"
맞다 면 꼭 사용하십시오. 하지만 제발 테스트해야 무슨 일 때 뭔가 변경, 방향 변경이 전체 활동을 다시 시작 트리거 할 수있는 유일한 방법이 아니기 때문에.