android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@1ed48043 is not valid; is your activity running?
WindowManager: Attempted to add application window with unknown token Token{
AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client
报错场景,当从一个activity跳转到一个tabhost搭建的UI框架时,再从tabhost切到activiy时无法添加progressdialog对话框。这种错误经测试之手检测出来,因为第一次能够正常显示进度条,第二次切换账号就无法显示,所以说context没有问题。
经过长时间的研究,最终得到解决办法。
1、检查当前调用展示progressdialog方法的对象是不是当前activity,是否是已经销毁的actvity,但是该对象被设置为静态的没有更新成切换的的activity。特别要注意的是第一次能弹进度条,再次切换的该activity出现的问题。
2、就是在progressdialog调用show方法前提前调用:注意这里弹对话框的context必须是当前activity的对象,不然无法在该activity中控制。这种是弹到系统中了,按home键还存在,需要在onstop中处理。
loadingDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);该方法,让进度条展示到系统的windows上,但还能在自己app中控制。
希望能帮到为同样问题苦恼的的程序员。
System.err: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@1ed48043 is not valid; is your activity running?
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at android.view.ViewRootImpl.setView(ViewRootImpl.java:562)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:272)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at android.app.Dialog.show(Dialog.java:298)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at com.gsww.ui.activity.Login2Activity.showProgress(Login2Activity.java:992)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at com.gsww.presenter.LoginPresenter$1.showProgress(LoginPresenter.java:55)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at com.gsww.model.impl.LoginModel$2.onStart(LoginModel.java:153)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:325)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:138)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at android.os.Looper.loop(Looper.java:135)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5221)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at java.lang.reflect.Method.invoke(Native Method)
08-01 16:02:23.674 14370-14370/com.gsww.androidnma.activity W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
08-01 16:02:23.675 14370-14370/com.gsww.androidnma.activity W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
08-01 16:02:23.675 14370-14370/com.gsww.androidnma.activity W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
该怎样解决呢?