• 목록 (128)
    • Android (62)
    • Back-End (2)
    • Java (3)
    • Kotlin (16)
    • CS (7)
    • 개발 서적 (12)
    • 문제 풀이 (26)

최근 글

티스토리

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
MJ_94
Android

[Android] 시스템 설정 변경 처리하기

Android

[Android] 시스템 설정 변경 처리하기

2024. 6. 25. 10:34

안드로이드 애플리케이션 개발 시 다양한 상황에서 기기 설정 변경이 발생할 수 있다. 이러한 상황에 대응하기 위해 안드로이드에서는 onConfigurationChanged 콜백 메서드를 제공한다. 

onConfigurationChanged란?

onConfigurationChanged는 기기의 설정이 변경될 때 호출되는 메서드다. 대표적인 설정 변경 예로는 화면 회전, 화면 크기 변경, 키보드 타입 변경, 언어 설정 변경 등이 있다. 이러한 변경 사항이 발생할 때, 시스템은 해당 액티비티의 onConfigurationChanged 메서드를 호출한다.

onConfigurationChanged의 사용법

기본적으로, 설정 변경이 발생하면 안드로이드 시스템은 현재 액티비티를 종료하고 새로운 설정을 반영하여 재시작한다. 하지만, 이 과정에서 사용자의 데이터가 초기화될 수 있다. 이를 방지하기 위해 onConfigurationChanged 메서드를 사용하여 직접 설정 변경을 처리할 수 있다.

1. 매니페스트 설정

onConfigurationChanged 메서드를 사용하려면, 우선 매니페스트 파일에서 해당 액티비티가 어떤 설정 변경을 직접 처리할 것인지 명시해야 한다. 예를 들어, 화면 회전과 언어 변경을 처리하려면 다음과 같이 작성한다

<activity
    android:name=".MainActivity"
    android:configChanges="orientation|screenSize|locale" />

 

2. 메서드 오버라이드

매니페스트 파일을 설정한 후, 액티비티 클래스에서 onConfigurationChanged 메서드를 오버라이드한다.

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    
    // 화면 회전 처리
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        // 가로 모드일 때 처리할 내용
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        // 세로 모드일 때 처리할 내용
    }

    // 언어 변경 처리
    if (newConfig.locale != null) {
        // 새로운 언어 설정 반영
    }
}

newConfig 객체 정보

newConfig = {1.0 450mcc8mnc [ko_KR] ldltr sw384dp w384dp h757dp 450dpi nrml long port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2340) mAppBounds=Rect(0, 77 - 1080, 2205) mMaxBounds=Rect(0, 0 - 1080, 2340) mDisplayRotation=ROTATION_0 mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0 mPopOver=off mOverlappingWithCutout=false mStageConfig=undefined mFreeformTaskPinningState=unpinned} s.2 fontWeightAdjustment=0 ff=0 bf=0 bts=0 cst=1.0 nightDim=0 themeSeq=0}

주의사항

onConfigurationChanged를 사용할 때 몇 가지 주의해야 할 점이 있다.

  • 적절한 설정 반영: 설정 변경이 발생하면 사용자 인터페이스나 데이터 상태를 적절히 업데이트해야 한다. 그렇지 않으면 사용자가 예상치 못한 결과를 경험할 수 있다.
  • 리소스 로드: 특정 리소스가 변경된 설정에 따라 다를 경우, onConfigurationChanged에서 해당 리소스를 다시 로드해야 한다. 예를 들어, 레이아웃 파일이 다를 경우 이를 재설정한다.
  • 메모리 관리: 설정 변경 시 불필요한 메모리 사용을 방지하기 위해, 불필요한 객체나 리소스를 해제하는 것이 좋다.
저작자표시 비영리 변경금지 (새창열림)

'Android' 카테고리의 다른 글

[Android] RecyclerView 안티 패턴  (0) 2024.08.27
[Android] Compose remember 간단 요약  (0) 2024.07.17
[Android] ViewModel에서 LiveData와 StateFlow의 권장 사용 방법  (0) 2024.06.20
[Android] OS 10 이상에서 알림 갯수 제한 문제 해결  (0) 2024.06.19
[Android] DiffUtil과 Payload를 활용한 RecyclerView 성능 최적화  (0) 2024.06.18
    'Android' 카테고리의 다른 글
    • [Android] RecyclerView 안티 패턴
    • [Android] Compose remember 간단 요약
    • [Android] ViewModel에서 LiveData와 StateFlow의 권장 사용 방법
    • [Android] OS 10 이상에서 알림 갯수 제한 문제 해결
    MJ_94
    MJ_94
    안드로이드, 개발 관련 기술 블로그

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.