BadTokenException:is your activity running?

    科技2024-11-30  11

    android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy is not valid; is your activity running?

    静态的Activity类型的Context作为参数传入Dialog,APP退出,Dialog调用dismiss()后,Context没有置null。再次进入APP,Dialog的参数Context,还是APP退出前的Activity对象。在调用Dialog的show()方法后,就会出现上述错误。

    1.不要把Activity赋值给静态Context,这样Activity对象无法释放,容易造成内存泄漏。

    2.在调用Dialog的dismiss()时,记得给Context置null。确保每次在new Dialog对象的时候,用到的都是当前Activity类型的Context。

    if (null != sDialog && sDialog.isShowing()){ sDialog.dismiss(); sDialog = null; if (null != sContext){ sContext = null; } Log.d(TAG, "dismiss: sDialog = " + sDialog + " , sContext = " + sContext); }

     

    Processed: 0.087, SQL: 8