• Android Activity has leaked window that was originally added


    今天调试程序时log中突然打印这样的错误,但是程序并没有crash,为了不放过一个错误,我决定调查一下。

    当时是离开一个activity,然后提示是否退出此界面,接下来就打印此错误:

    03-08 18:02:48.521: E/WindowManager(6340): Activity com.linc.megatron.activity.ExamActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40568ea8 that was originally added here
    03-08 18:02:48.521: E/WindowManager(6340): android.view.WindowLeaked: Activity com.linc.megatron.activity.ExamActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40568ea8 that was originally added here
    03-08 18:02:48.521: E/WindowManager(6340):     at android.view.ViewRoot.<init>(ViewRoot.java:264)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.app.Dialog.show(Dialog.java:241)
    03-08 18:02:48.521: E/WindowManager(6340):     at com.linc.megatron.base.BackKeyActivity.showDialog(BackKeyActivity.java:76)
    03-08 18:02:48.521: E/WindowManager(6340):     at com.linc.megatron.base.BackKeyActivity.onKeyDown(BackKeyActivity.java:62)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.view.KeyEvent.dispatch(KeyEvent.java:1256)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.app.Activity.dispatchKeyEvent(Activity.java:2078)
    03-08 18:02:48.521: E/WindowManager(6340):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1709)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2628)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2603)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1875)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.os.Handler.dispatchMessage(Handler.java:99)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.os.Looper.loop(Looper.java:123)
    03-08 18:02:48.521: E/WindowManager(6340):     at android.app.ActivityThread.main(ActivityThread.java:3687)
    03-08 18:02:48.521: E/WindowManager(6340):     at java.lang.reflect.Method.invokeNative(Native Method)
    03-08 18:02:48.521: E/WindowManager(6340):     at java.lang.reflect.Method.invoke(Method.java:507)
    03-08 18:02:48.521: E/WindowManager(6340):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    03-08 18:02:48.521: E/WindowManager(6340):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
    03-08 18:02:48.521: E/WindowManager(6340):     at dalvik.system.NativeStart.main(Native Method)

    显然,我用Dialog确认是否退出,但是activity销毁后并没有处理Dialog的退出。 

    解决办法:

    知道了问题所在就容易解决问题了。只需要在activity销毁时关闭Dialog就好。

        @Override
        protected void onDestroy() {
            if(mDialog != null) {
                mDialog.dismiss();
            }
            super.onDestroy();
        }
  • 相关阅读:
    flask 非要将视图和app放在一个空间
    spring mvc 实用的思想
    不能在windows上使用但值得关注的项目
    AI 医疗
    我也是混乱了同步盘和网盘
    常用free文献数据库
    机器学习中如何处理不平衡数据?
    自己制作的学习笔记视屏,还有记录的代码。
    函数的指针(一)写一个能对任意数组排序的冒泡排序
    自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7661349.html
Copyright © 2020-2023  润新知