窗体泄露(存在问题)
来源:互联网 发布:确保成本测算数据准确 编辑:程序博客网 时间:2024/06/16 18:51
错误日志
android.view.WindowLeaked: Activity com.example.administrator.individualresume.view.MainActivity has leaked window DecorView@fcd0a1f[] that was originally added here
日志分析
WindowLeaked意指窗体泄漏,即内存泄漏。
产生原因
Android每Activity都有一WindowManager(窗体管理器),同理构建于某Activity上对话框、PopupWindow也有相应WindowManager。因对话框、PopupWindown不能脱离Activity单独存在,故Dialog或PopupWindow处于显示时,因finish承载该Dialog或PopupWindow的Activity,导致该Dialog或PopupWindow窗体管理器无可附属Activity,故抛异常,即窗体管理器泄漏。
方案一
关闭Activity前,确保附属Dialog或PopupWindow已dismiss。
方案二(存在问题)
BaseActivity(基类)中,监听、异步方法、对话框混合使用,例如仿QQ异地登录强制下线。因某种原因,出现如下情况:
10-13 06:26:18.863 19300-19300/com.example.administrator.individualresume E/基类状态: true10-13 06:26:18.863 19300-19300/com.example.administrator.individualresume E/基类状态: true10-13 06:26:18.864 19300-19300/com.example.administrator.individualresume E/基类状态: false
此时需先判断BaseActivity是否关闭,没关闭则执行对话框操作;否则不执行。如下:
if (!BaseActivity.this.isFinishing()) { // 对话框操作}
方案三
可在OnCreateDialog()
中创建Dialog,让系统管理对话框。
阅读全文
0 0
- 窗体泄露(存在问题)
- 窗体泄露
- 延迟加载:vtk与MFC存在内存泄露问题
- 关于java是否存在内存泄露的问题
- ffmpeg 使用gdigrab 抓取屏幕 存在gdi泄露的问题
- java是否存在内存泄露(面试题之一)
- 判断窗体存在
- GDI泄露问题(1)
- 反驳:Threadlocal存在内存泄露
- android 窗体泄露 window leak
- cocos2d-x-2.2 for windows phone 8 CocosDenshion存在内存泄露问题
- iOS手动内存管理之对象持有对象可能存在的内存泄露问题
- 解决Duilib list控件,removeall() 时存在内存泄露的问题
- 单点登录问题和android.view.WindowLeaked(窗体泄露)的解决方案
- $.getJSON()存在缓存问题
- 检测子窗体是否存在
- C# winform TabPage两个存在关联关系的窗体数据不刷新问题
- 存在问题
- windows10+visual studio 2017 + report viewer 报表中文乱码
- transient关键字
- 模拟信号求解相位差(2)
- 不求甚解-zookeeper
- Excel根据身份证号提取省份
- 窗体泄露(存在问题)
- java反射例子
- 欢迎使用CSDN-markdown编辑器
- springboot整合redis进行数据操作(一)
- 滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现
- 对用户进行操作日志审计
- 支付宝:sign check fail: check Sign and Data Fail!JSON also!
- LeetCode 55 Jump Game
- 传奇私服 搭建