窗体泄露(一)(存疑)

日志

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/基类状态: true
10-13 06:26:18.863 19300-19300/com.example.administrator.individualresume E/基类状态: true
10-13 06:26:18.864 19300-19300/com.example.administrator.individualresume E/基类状态: false

此时需先判BaseActivity关否,没关则执行对话框操作;否不执行。如下:

if (!BaseActivity.this.isFinishing()) {
	// 对话框操作
}

方案三

可于OnCreateDialog()中创Dialog,让系统管理对话框。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snpmyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值