android.view.WindowLeaked窗体泄露异常的解决方案
2016-08-10 16:27
525 查看
android.view.WindowLeaked窗体泄露异常的解决方案:
Android.view.WindowLeaked按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢?
产生原因:
我们知道Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的对话框、PopupWindow也有相应的WindowManager窗体管理器。因为对话框、PopupWindown不能脱离Activity而单独存在着,所以当某个Dialog或者某个PopupWindow正在显示的时候我们去finish()了承载该Dialog(或PopupWindow)的Activity时,就会抛Window Leaked异常了,因为这个Dialog(或PopupWindow)的WindowManager已经没有谁可以附属了,所以它的窗体管理器已经泄漏了。
解决方法:
关闭(finish)某个Activity前,要确保附属在上面的Dialog或PopupWindow已经关闭(dismiss)了。
上面的你如果遇到了,很容易解决!但是我在开发中,却不是这个原因,我的原因是一直提示在MainActivity里面出现窗体溢出,我在MainActivity里面有几个fragment,在fragment里面用到了dialog,我是很规律的先调用show,然后dismiss。MainActivity也没有让他消失finish.
后来我发现,我在MainActivity里面调用了这个方法导致的
FLAG_ACTIVITY_NEW_TASK如果设置了此标志,这个activity将成为一个新task的历史堆栈中的第一个activity。这个task定义了一个原子组activities,用户可以对其进行移除。各种tasks可以移到前面或者后面;在一个特定的task中,所有的activities总是保持相同的顺序。
上面的解释就是MainActivity重新创建了,那么原来的MainActivity被finish了,但是dialog没有先被dismiss,这样子就造成了android.view.WindowLeaked窗体泄露异常。
Android.view.WindowLeaked按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢?
产生原因:
我们知道Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的对话框、PopupWindow也有相应的WindowManager窗体管理器。因为对话框、PopupWindown不能脱离Activity而单独存在着,所以当某个Dialog或者某个PopupWindow正在显示的时候我们去finish()了承载该Dialog(或PopupWindow)的Activity时,就会抛Window Leaked异常了,因为这个Dialog(或PopupWindow)的WindowManager已经没有谁可以附属了,所以它的窗体管理器已经泄漏了。
解决方法:
关闭(finish)某个Activity前,要确保附属在上面的Dialog或PopupWindow已经关闭(dismiss)了。
上面的你如果遇到了,很容易解决!但是我在开发中,却不是这个原因,我的原因是一直提示在MainActivity里面出现窗体溢出,我在MainActivity里面有几个fragment,在fragment里面用到了dialog,我是很规律的先调用show,然后dismiss。MainActivity也没有让他消失finish.
后来我发现,我在MainActivity里面调用了这个方法导致的
Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
FLAG_ACTIVITY_NEW_TASK如果设置了此标志,这个activity将成为一个新task的历史堆栈中的第一个activity。这个task定义了一个原子组activities,用户可以对其进行移除。各种tasks可以移到前面或者后面;在一个特定的task中,所有的activities总是保持相同的顺序。
上面的解释就是MainActivity重新创建了,那么原来的MainActivity被finish了,但是dialog没有先被dismiss,这样子就造成了android.view.WindowLeaked窗体泄露异常。
相关文章推荐
- 关于android.view.WindowLeaked(窗体泄露)的解决方案
- 关于android.view.WindowLeaked(窗体泄露)的解决方案
- 关于android.view.WindowLeaked(窗体泄露)的解决方案
- 关于android.view.WindowLeaked(窗体泄露)的解决方案
- 关于android.view.WindowLeaked(窗体泄露)的解决方案
- 单点登录问题和android.view.WindowLeaked(窗体泄露)的解决方案
- [android窗体泄露]android.view.WindowLeaked的解决方案
- 关于android.view.WindowLeaked(窗体泄露)的解决方案
- 关于android.view.WindowLeaked异常的解决方案
- android.view.WindowLeaked异常的解决方案
- 关于android.view.WindowLeaked异常的解决方案
- 窗体泄露 android.view.WindowLeaked: Activity XxxActivity has leaked window android.widget.PopupWindow$Po
- 关于android.view.WindowLeaked异常的解决方案
- Android Dialog的 WindowLeaked窗体泄露异常
- 关于android.view.WindowLeaked异常的解决方案
- 关于android.view.WindowLeaked异常的解决方案
- 关于android.view.WindowLeaked异常的解决方案
- 关于android.view.WindowLeaked异常的解决方案
- 关于android.view.WindowLeaked异常的解决方案
- 关于android.view.WindowLeaked异常的解决方案