권한 변경 시 생명주기

2022. 1. 6. 15:59Android/개발 CASE

[이슈] 권한 변경에 의한 프로세스 종료시, 재시작 생명주기에서 기존에 붙어있던 프래그먼트가 자동으로 생성되어 액티비티에 붙어있으나, 설정했던 클릭 리스너는 생성되지 않아 동작하지 않음

CallgateMng implements ClickListener + showDialog에서 CallgateDialog 생성

CallgateDialog extends DialogFragment

 

// 동작 과정은 로그를 통해..

2022-01-06 14:58:06.439 18539-18539/com.hanwhalife.hiw.qa I/KMJTEST: [MainActivity] onCreate() : 68431783
2022-01-06 14:58:10.268 18539-18539/com.hanwhalife.hiw.qa I/KMJTEST: [NewMainWindow] onCreate() : 106358367
2022-01-06 14:58:10.802 18539-18539/com.hanwhalife.hiw.qa I/KMJTEST: [MemberStateObservable] data : update_home
2022-01-06 14:58:14.232 18539-18539/com.hanwhalife.hiw.qa I/KMJTEST: [MainActivity] onRequestPermissionResult exposeCallgate
2022-01-06 14:58:14.250 18539-18539/com.hanwhalife.hiw.qa I/KMJTEST: [CallgateMng] getInstance() : 122513795
2022-01-06 14:58:14.250 18539-18539/com.hanwhalife.hiw.qa I/KMJTEST: [CallgateMng] showDialog()
2022-01-06 14:58:14.256 18539-18539/com.hanwhalife.hiw.qa I/KMJTEST: [CallgateDialog] onCreateView() : 6260439

 

// 권한 변경 시,

2022-01-06 14:58:32.708 19005-19005/com.hanwhalife.hiw.qa I/KMJTEST: [MainActivity] onCreate() : 173610616
2022-01-06 14:58:33.209 19005-19005/com.hanwhalife.hiw.qa I/KMJTEST: [CallgateDialog] onCreateView() : 193196783
2022-01-06 14:58:34.690 19005-19005/com.hanwhalife.hiw.qa I/KMJTEST: [NewMainWindow] onCreate() : 161434987

// 권한 대화창 허용을 누르면

2022-01-06 14:59:26.139 19005-19005/com.hanwhalife.hiw.qa I/KMJTEST: [MainActivity] onRequestPermissionResult exposeCallgate
2022-01-06 14:59:26.145 19005-19005/com.hanwhalife.hiw.qa I/KMJTEST: [CallgateMng] getInstance() : 152269434
2022-01-06 14:59:26.145 19005-19005/com.hanwhalife.hiw.qa I/KMJTEST: [CallgateMng] showDialog()

 

[원인] Activity 종료 시 onSavedInstanceState()가 실행되고, 예기치 못한 종료 시에는 저장되는 Bundle에 자신의 Fragment, Dialog, View 등의 정보를 담아 시스템에서 보관한다. 복구 시점에 적용이 되는 정보로, DialogFragment의 경우 Activity 종료 시에 붙어있었기 때문에 복구가 되지만 인스턴스가 새로 생성이 되는 것이기 때문에 인스턴스 생성 후에 지정되었던 클릭리스너는 null인 상태이다.

 

[해결] DialogFragment 생성 이후에 클릭 릭스너를 재설정한다. (setClickListener() 재호출)

 

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