Coding/Android

[Android] android.view.WindowLeaked 에러

어기적어기적 2020. 11. 4. 15:37
728x90

앱 업데이트 출시를 위해 테스트 중 android.view.WindowLeaked 에러가 발생했습니다.

발생 경로는 팝업이 떠있는 상태에서 시스템 언어를 변경할 때 발생했습니다.

 

발생 원인

시스템 언어를 변경하면 팝업이 떠있는 액티비티가 재시작하는데 초기화되지 않은 팝업을 다시 띄우려고 시도하기 때문이었습니다.

 

해결 방법

해결 방법은 간단히 했습니다. 팝업을 보존할 수도 있겠지만, 앱이 액티비티 재시작의 경우 모든 팝업은 사라지는 콘셉트이었으므로 onDestroy에서 팝업을 dismiss 시켜주었습니다.

 

1. 팝업을 null로 미리 선언해주었을 때

    override fun onDestroy() {
        popup?.dismiss()
        super.onDestroy()
    }

2. 팝업을 lateinit 해주었을 때

    override fun onDestroy() {
        if (::popup.isInitialized) {
            popup.dismiss()
        }
        super.onDestroy()
    }
728x90