2012-07-11 2 views
0

기본적으로 내 앱이 실행되는 동안 사용자가 기기의 표시 언어를 변경하면 Android는 활동을 삭제 한 다음 다시 만듭니다. 그것은 내 애플 리케이션이 올바르게 최신 설정을 사용하고 있는지 확인합니다.내 GLSurfaceView 앱이 Android 기기의 로켈을 읽을 필요가없는 경우 안전하게 로케일 설정 변경 사항을 무시할 수 있습니까?

매니페스트의 configChanges 특성에 locale을 추가하여이 동작을 무시할 수 있습니다. 그런 다음 사용자가 언어를 변경하면 전체 다시 시작보다는 onConfigChanged()으로 콜백 만받습니다. 그러나 documentation은 다시 "모든 리소스를 검색해야합니다"라고 말합니다.

이러한 구성 변경 사항은 모두 응용 프로그램에 표시되는 리소스 값에 영향을 미칠 수 있습니다. 따라서 onConfigurationChanged()가 호출되면 일반적으로 변경 사항을 올바르게 처리 할 수 ​​있도록 모든 리소스 (뷰 레이아웃, 드로어 블 등)를 다시 검색해야합니다.

내 질문은 이것이 로캘 변경에 실제로 해당되는 것입니까? GLSurfaceView를 사용하여 사용자의 언어 설정을 전혀 사용하지 않고 그래픽 만 렌더링하는 가설 응용 프로그램이있는 경우이 이벤트를 무시하는 것이 안전합니까? 그렇다면 문서로 백업 할 수 있습니까?

이벤트를 무시하면 이 올바르게 작동하며, 어쨌든 로캘을 사용하지 않을 때는보기를 다시 만들지는 못하지만 어쨌든 소개하지 않을 것이라고 확신하고 싶습니다. 미묘한 버그.

모든 정보를 매우 높이 평가합니다. 당신이 말했듯이

답변

1

, 당신의 GLSurfaceView는 당신이 레이아웃은 결코 그 구성에 따라되지 변경됩니다 있다면 keyboard 또는 screenSize를 추가해도 괜찮은지로 configChangeslocale를 추가해도 괜찮은지, 독립 완전히 로케일입니다.

편집 : 문서는 : http://developer.android.com/guide/topics/resources/runtime-changes.html

그러나, 당신은 데이터의 응용 프로그램을 다시 시작 및 복원 상당한 양의은 치명타가 될 수있는 상황이 발생하고 가난한 사용자 경험을 만들 수 있습니다.

[...]

B : 그런 상황에서, 당신은 두 가지 옵션이 있습니다.

특정 구성 변경 중에 시스템이 활동을 다시 시작하지 못하도록하지만 구성이 변경 될 때 콜백을 수신하지 않도록하십시오. 그러면 필요에 따라 수동으로 활동을 업데이트 할 수 있습니다. 또한

: http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange

응용 프로그램 특정 구성 변경시 자료를 업데이트 할 필요가 없습니다 당신이 활동을 다시 시작하지 않도록 당신을 필요로하는 성능 제한이있는 경우, 당신은 선언 할 수 있습니다 활동이 구성 변경 자체를 처리하므로 시스템이 활동을 다시 시작하지 못하게합니다.

+0

틱,하지만 이것을 뒷받침 할 문서가 있으면 좋을 것 같습니까? – tenpn

+0

답변을 편집하고 공식 Android 설명서 링크를 제공했습니다. – chrulri

관련 문제