응용 프로그램이 다중 언어를 지원할 때 언어를 전환한 후에 다시 시작하는 문제를 해결합니다
1760 단어 안드로이드 애플리케이션 개발
최근에 Android Manifest라는 문제가 발생했습니다.configChanges locale 속성이 xml에 구성됨
[html] view plain copy
android:configChanges="locale"
이후 앱을 종료하지 않은 상태에서 Settings로 전환하여 언어를 전환하였는데, 이 Activity가 다시 시작되었음을 발견하였다.
인터넷(http://blog.sina.com.cn/s/blog_629712650101a1o3.html설명:4.2layoutDirection 속성을 추가하여 언어 설정을 바꾸면 이 속성도 newConfig의 mask 비트가 됩니다.그래서 Activity Manager 서비스(실제로Activity Stack)는 Activity를 다시 시작할지 여부를 결정할 때 항상 재시작으로 판단합니다.android:configChanges에locale과layoutDirection을 동시에 추가해야 합니다.
[html] view plain copy
android:configChanges="locale|layoutDirection"
======================================================================================================================================
4.2에서 app가 configChanges locale 속성을 설정한 후 app가 백엔드에 있고finish가 없을 때 언어를 바꾸면resume에서Activity가 다시 쓰는 onConfigurationChanged 함수를 호출하지 않습니다.
이유: 4.2 하나 증가
layoutDirection
속성, 언어 설정을 바꾸면 newConfig의 mask 비트가 됩니다.그래서 Activity Manager 서비스(실제로Activity Stack)는 Activity를 다시 시작할지 여부를 결정할 때 항상 재시작으로 판단합니다.
... 에 있다
android: configChanges에locale과layoutDirection을 동시에 추가할 때 app가 원하는 일이 발생합니다.
SDK 설명서에는 다음이 포함됩니다.
"
orientation
"The screen orientation has changed — the user has rotated the device. Note: If your application targets API level 13 or higher (as declared by the
minSdkVersion
and targetSdkVersion
attributes), then you should also declare the "screenSize"
configuration, because it also changes when a device switches between portrait and landscape orientations. 하지만locale에는 설명이 없다.locale에도 이와 유사한 설명이 있을 것입니다.