상황 : 문제상황 기록을 체크하던중 아래와 같은 에러발생함
Fatal Exception: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@3e06ac3 is not valid; is your activity running?
위의 에러를 확인후 구글링 해서 찾고, 이해한 내용을 적겠다.
나는 아래와 같은 코드를 사용한다.
mActivity = 상속받은 클래스 에서 사용하는 activity 이다.
CommonDialog.show(mAcivity, "", "ServerBusy", "ok", null, new IDialogOnClickListener() {
@Override
public void btn1() {
finish();
}
@Override
public void btn2() {
}
});
찾아본 바에 의하면 위의 CommonDialog 를 실행하는 과정에 있어서 Back 버튼으로 앱을 종료 시켰을때 mActivity 가 소멸되어 위의 에러가 발생하는
문제라고 판단된다.그래서 위의 mActivity 를 넣어서 사용하는 부분에 , 사용하기 전에 mActivity 가 실행중인지 아닌지 판단하여, 실행중이 아닐때에는 위의 CommonDialog 를 실행하지 않게끔 하는 코드를 추가로 넣어주어 위의 에러를 미연에 방지할수있다고 생각한다.
if (!mActivity.isFinishing()) {
CommonDialog.show(mAcivity, "", "ServerBusy", "ok", null, new IDialogOnClickListener() {
@Override
public void btn1() {
finish();
}
@Override
public void btn2() {
}
});
}
위의 코드를 넣으면 mActivity 가 살아있는지 없는지에 대한 판단이 가능하여 에러를 방지할수있게 된다.
-끝-
'Android Study' 카테고리의 다른 글
입력값을 Filter 와 Match 를 이용하여 Pattern 체크하기 (0) | 2019.01.31 |
---|---|
갤럭시 S9 디바이스 PC 연결이슈 (0) | 2019.01.30 |
안드로이드 DB를 이용한 Library > Paper (0) | 2019.01.22 |
카운터 타이머 클래스로 사용하기 (0) | 2019.01.22 |
아주 기초적?이지만 깜박했던 실수! (0) | 2019.01.13 |