1、addView窗体泄漏问题:android.view.WindowLeaked

android.view.WindowLeaked一般会发生在Activity与Dialog的显示。

(1)dialog、PopupWindown窗体

原因:我们知道Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的dialog、PopupWindow也有相应的WindowManager窗体管理器。因为dialog、PopupWindown不能脱离Activity而单独存在着,所以当某个Dialog或者某个PopupWindow正在显示的时候我们去finish()了承载该Dialog(或PopupWindow)的Activity时,就会抛Window Leaked异常了,因为这个Dialog(或PopupWindow)的WindowManager已经没有谁可以附属了,所以它的窗体管理器已经泄漏了。

解决方法:关闭(finish)某个Activity前,要确保附属在上面的Dialog或PopupWindow已经关闭(dismiss)了。

(2)activity窗体

和dialog不同,WindowManager在AddView后,在activity的onDestroy中移除View时用removeViewImmediate​(),而不能用removeView()。

2、removeView报not attached to window manager问题

原因:若当前view已经remove了,再次调用removeView会报以上错误。

解决方法:removeView时需要先判断当前view是否已经移除过。

 

 

 

更多相关文章

  1. 学习Android从0开始之基础篇(3)-视图组件之布局管理器
  2. android 调用系统文件管理器
  3. 英特尔® 硬件加速执行管理器安装指南 — Microsoft Windows*
  4. Android 布局管理器 之 RelativeLayout&FrameLayout&AbsoluteLay
  5. [转]Android 应用初始化及窗体事件(按键)的分发 [此博文包含图片]
  6. AndroidUI设计之 布局管理器 - 详细解析布局实现
  7. Android情景模式、文件管理器 完整示例编程详解

随机推荐

  1. Oracle 10g各个帐号的访问权限、登录路径
  2. SQL Server 更改DB的Collation
  3. SQL Server约束增强的两点建议
  4. 存储过程解密(破解函数,过程,触发器,视图
  5. MSSQL SERVER中的BETWEEN AND的使用
  6. sql 数据库还原图文教程
  7. sql server中的decimal或者numeric的精度
  8. SQL 时间类型的模糊查询
  9. mssql 指定字段编号sql语句
  10. MSSQL 游标使用 心得