Android Study

Error : android.view.WindowManager$BadTokenException

85chong 2019. 1. 25. 17:39
728x90
반응형
SMALL

상황 :  문제상황 기록을 체크하던중 아래와 같은 에러발생함


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 가 살아있는지 없는지에 대한 판단이 가능하여 에러를 방지할수있게 된다.

-끝-