투케이2K

327. (AndroidStudio/android/java) registerComponentCallbacks 사용해 실시간 시스템 설정 (Configuration) 변경 상태 감지 본문

Android

327. (AndroidStudio/android/java) registerComponentCallbacks 사용해 실시간 시스템 설정 (Configuration) 변경 상태 감지

투케이2K 2022. 8. 22. 13:57
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java

 

[소스 코드]

        // -----------------------------------------

        // [onCreate : 컴포넌트 콜백 등록 및 실시간 장치 구성 변경 상태 체크]
        try {
            getApplication().registerComponentCallbacks(new ComponentCallbacks() {

                /**
                 * // -----------------------------------
                 * [registerComponentCallbacks 설명]
                 * // -----------------------------------
                 * 1. registerComponentCallbacks 은 장치 구성 변경 상태를 감지할 수 있습니다.
                 * // -----------------------------------
                 * 2. onConfigurationChanged : 구성 요소가 실행되는 동안 장치 구성이 변경되면 시스템에서 호출합니다.
                 * // -----------------------------------
                 * 3. onLowMemory : 전체 시스템의 메모리가 부족하고 실행 중인 프로세스가 메모리 사용량을 줄여야 할 때 호출됩니다.
                 * // -----------------------------------
                 * 4. registerComponentCallbacks 를 사용하면 디스플레이 속성 관련 변경을 감지 할 수 있습니다.
                 *  - 디스플레이 light / dark 모드 전환 (newConfig.uiMode)
                 *  - 디스플레이 텍스트 폰트 크기 변경 (newConfig.fontScale)
                 * // -----------------------------------
                 * 4. 참고 구글 디벨로퍼 사이트 :
                 *
                 * https://developer.android.com/reference/android/content/ComponentCallbacks
                 * // -----------------------------------
                 * */

                @Override
                public void onConfigurationChanged(Configuration newConfig) {
                    Log.i("---","---");
                    Log.w("//===========//","================================================");
                    Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> registerComponentCallbacks() :: 장치 구성 요소 변경 확인]");
                    Log.i("","\n"+"[newConfig :: " +String.valueOf(newConfig.toString())+ "]");
                    Log.i("","\n"+"[uiMode :: " +String.valueOf(newConfig.uiMode)+ "]"); // [라이트 / 다크 모드]
                    Log.i("","\n"+"[keyboard :: " +String.valueOf(newConfig.fontScale)+ "]"); // [폰트 사이즈]
                    Log.w("//===========//","================================================");
                    Log.i("---","---");
                }

                @Override
                public void onLowMemory() {
                    Log.i("---","---");
                    Log.e("//===========//","================================================");
                    Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> registerComponentCallbacks() :: 전체 시스템의 메모리가 부족 상태 확인]");
                    Log.e("//===========//","================================================");
                    Log.i("---","---");
                }
            });
        }
        catch (Exception e){
            e.printStackTrace();
        }

        // -----------------------------------------
 

[결과 출력]


반응형
Comments