Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- [databinding]
- android.view.WindowManager.BadTokenException
- material3
- {"msg":"cannot find method
- WindowManager$BadTokenException
- @stable
- 안드로이드 다이얼로그 오류
- 터치이벤트 순서
- dispatchTouchEvent
- isFinishing()
- 레트로핏
- android compose
- Python
- effect api
- android compose stable
- Java
- rememberCoroutineScope
- 힐트
- onIntercepterTouchEvent
- compose side-effect
- android mvi
- LaunchedEffect vs rememberCoroutineScope
- @immutable
- Android
- @provides @binds 차이
- databinding xml
- Could not find method
- 안드로이드
- databinding error
- LaunchedEffect
Archives
- Today
- Total
개발관련일지
안드로이드 WindowManager$BadTokenException 오류 해결 본문
WindowManager$BadTokenException
처음 보는 오류여서 검색해보았는데 대부분 유저들의 내용으론 화면에 보여질 컨테스트와 다이얼로그의 문제였다
내 경우는 죽은 액티비티에 서브스레드에서 다이얼로그를 요청하는 상황에서 에러가 나온다 생각했다.
위와 같은 상황이었고 서브스레드를 돌려놓고 엑티비티를 종료하니 에러를 만날 수 있었다.
해결방법으론 엑티비티의 종료여부를 보고 다이얼로그를 안띄우는 방식이 있엇다
isFinishing()을 사용해서 아래 코드처럼 해결이 될것이다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
if(! 액티비티.this.isFinishing()){
new MaterialAlertDialogBuilder(액티비티.this)
.setTitle("제목")
.setMessage("내용")
.setCancelable(false)
.setPositiveButton("확인", /* listener = */ new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO 진행코드
dialog.dismiss();
}
})
.show();
}
|
cs |
근데 isFinishing() 이란 것도 처음 보았다. 코드를 따라가서 보니
종료되는 중이면 트루를 리턴한다고 한다. 밑에 보니 디스트로이도 있었다. 동작하는 순서를 로그를 이용해서 확인해보았다.
1. 엑티비티에서 화면에서 벗어난 이후 로그
2. 백스페이스로 종료를 한 이후 로그
isFinishing()도 있지만 내 경우에는 서브스레드가 멈추도록 하는게 근본적인 해결방법으로 판단된다.
참고
https://blog.sangyoung.me/2016/12/28/BadTokenException/
'개발기록 > 안드로이드' 카테고리의 다른 글
안드로이드 databinding xml 오류 (0) | 2021.08.18 |
---|---|
안드로이드 내부저장소 외부저장소 이해한것 정리 (0) | 2021.07.20 |
안드로이드 뷰의 터치이벤트 순서(touch event ) (0) | 2021.07.07 |
안드로이드 캔버스에 도형(원) 생성하고 움직이기 (0) | 2021.05.29 |
안드로이드 위도경도를 이용해 구글 Geocoder로 국내주소 구하기 (1) | 2021.01.10 |