[ERROR/EXCEPTION] Dialog IllegalStateException

2022. 1. 8. 20:59Android/개발 CASE

반응형

[이슈] 붙은 Activity의 생명주기 이후에 Dialog가 동작하는 경우 IllegalStateException 발생

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

[원인] Activity가 종료될 때 onSaveInstanceState가 호출이 되는데 Activity가 예기치 않게 소멸될 경우 저장되는 Bundle객체로 전달이 된다. 이때, Bundle 객체로 전달되는 정보는 자신의 Fragment, Dialog, View 등에 대한 정보이고, 이를 시스템 프로세스로 보내 안전하게 보관하고 있다가 추후 시스템이 Activity를 다시 생성하기로 결정했을 때 복구한다. 따라서, 이 시점 이후로 저장되는 정보(Fragment, Dialog, View 등)에 변경점이 생기면 복구 시점과 다른 상태를 지니게 되므로 이를 방지하고자 예외가 발생한다.

 

[해결] 

1. 비동기 콜백 메소드에서 commit() 혹은 dismiss() 등의 작업을 하지 말 것

2. commitAllowingStateLoss() 혹은 dismissAllowingStateLoss() 메소드로 복구 시점에 손실이 발생하더라도 괜찮을 때 사용(비권장됨)

3. dialog의 경우, activity의 onStop() 시점에서 dismiss() 하는 습관을 들일 것

 

 

https://readystory.tistory.com/113?category=861094 

 

[Android] Fragment 전환 시 IllegalStateException 원인 및 해결

얼마 전에 플레이 스토어에 'Memory King' 이라는 간단한 게임을 올렸습니다. 늘 그렇듯 앱에 Crashlytics를 연동해두어 유저 측에서 비정상 종료가 발생했을 경우 해당 Error Log를 수신하도록 해두었는

readystory.tistory.com

https://eso0609.tistory.com/69

 

Can not perform this action after onSaveInstanceState

Fabric [ New Fatal Issue] 가 전송되면 항상 조마조마한게 개발자의 마음... 이번 에러 메세지를 해결하는 과정을 기록해보았습니다. 이번 에러 메세지는 다음과 같습니다. Fatal Exception: java.lang.illegalSt.

eso0609.tistory.com

 

반응형