본문 바로가기
개발/Android

[Android] 설정에서 언어 변경(onCreate, onDestory 대응)

by 준그래머 2023. 12. 18.
반응형

언어 변경 시 생명주기

안드로이드 설정 앱에서 언어를 변경한 경우 이미 생성된 액티비티를 onDestory ⇒ onCreate 해주는 재생성 과정을 겪게 된다. 문제는 이 과정에서 데이터를 초기화하지 않으면 onCreate 중에 크래시 또는 데이터가 이상하게 나오는 현상이 발생한다.

 

따라서 언어 변경 시 onConfigurationChanged 함수에서 호출하는 방법에 대해 정리할 예정이다.

 

언어 설정 시 onConfigurationChanged 호출 하기

AndroidManifest.xml에 속성 추가

<activity
    ...
    android:configChanges="locale|layoutDirection"
    >
    ...
</activity>

 

위 속성이 추가되면 onConfigurationChanged 함수에서 관리할 수 있다.

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    Log.d(TAG, "onConfigurationChanged: locale list=" + newConfig.getLocales());
    Log.d(TAG, "onConfigurationChanged: primary locale country=" + newConfig.getLocales().get(0).getCountry());
}

 

zFlip5 기준(Android13)으로 언어 변경 시 아래와 같은 로그가 찍힌다.

12-18 17:15:27.934 D 7739 7739 JYPARK : onConfigurationChanged: locale list=[ko_KR,en_US,en_GB]
12-18 17:15:27.934 D 7739 7739 JYPARK : onConfigurationChanged: primary locale country=KR

 

참조

 

구성 변경 처리  |  Android 개발자  |  Android Developers

Android 앱에서 구성 변경을 처리하세요.

developer.android.com

 

반응형