具体情况:我一个Activity中新开了一个线程去读服务端数据,如果读取失败我会用showDialog提示用户是否重试。但是我如果在showDialog之前就把这个Activity给关了,程序会报错.这个问题肿么解决啊?
错误提示:
11-02 09:02:14.204: ERROR/AndroidRuntime(946): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@43756c40 is not valid; is your activity running?
有什么解决办法么?
错误提示:
11-02 09:02:14.204: ERROR/AndroidRuntime(946): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@43756c40 is not valid; is your activity running?
有什么解决办法么?
我试过HandlerThread,但是没有用。我还试过在onStop,onDestory,onPause中加加一个标志位,然后根据标志位来决定是否去showDialog,但是还是没有用。
我找到问题了,首先HandlerThread是没有用的,我测试过。具体原因大家都知道就不扯了。。我的做法还是定义了一个标置位,之前定义的标置位类型我设置成了static,问题就出在了这儿。把static去掉就OK了。这样子标置位只属于每个新开的Activity.
private Handler handler = new Handler() { @Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (isActivityRun == false) {
return;
} @Override
protected void onDestroy() {
super.onDestroy();
isActivityRun = false;
}