android.view.WindowLeaked解决方法

问题

我在使用WindowManager添加一个button, windowManager.addView(button,layoutParams);然后关闭当前的这个Activity的时候遇到了WindowLeak这个问题,也就是所谓的窗体泄露。

原因

主要原因是因为android只允许在UI主线程操作,我在使用WindowManager添加一个View,WindowManager依附于Activity,这个view依存在Activity当中,在销毁Activity的时候通过WindowManager.addView()的方法添加的View就没有了依存,导致了窗体泄露。View不能独立存在,必须依附于Window。

解决方法

一开始我在onDestroy()里面调用了removeView方法,想要移除这个View来避免窗体泄露,发现这个方法并不管用,后来换成removeViewImmediate()解决了这个问题,原因就是两个方法设计到线程同步问题,removeViewImmediate()是通知View立刻调用View.onDetachedFromWindow(),这说明这个方法是通过一个监听或者观察者来实现的,因为线程的同步跟异步问题导致activity销毁了,但view还没有被remove完,于是就产生了所谓的窗体泄露。问题解决,这两个方法也明白了又什么区别。

文章来源:安卓 android.view.WindowLeaked解决方法_android.view.windowleaked:-CSDN博客

相关推荐

  1. vue中404解决方法

    2023-12-05 16:04:05       43 阅读
  2. vue中404解决方法

    2023-12-05 16:04:05       30 阅读
  3. Linux 忘记密码解决方法

    2023-12-05 16:04:05       40 阅读
  4. 算法=问题的解决方法

    2023-12-05 16:04:05       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-05 16:04:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-05 16:04:05       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-05 16:04:05       82 阅读
  4. Python语言-面向对象

    2023-12-05 16:04:05       91 阅读

热门阅读

  1. entos定时自动备份mysql

    2023-12-05 16:04:05       51 阅读
  2. conda和pip常用命令整理

    2023-12-05 16:04:05       55 阅读
  3. 1292:宠物小精灵之收服

    2023-12-05 16:04:05       53 阅读
  4. CentOS7 防火墙常用命令

    2023-12-05 16:04:05       54 阅读
  5. 1022. 宠物小精灵之收服,二维花费的背包

    2023-12-05 16:04:05       53 阅读
  6. 14.Oracle中RegExp_Like 正则表达式基本用法

    2023-12-05 16:04:05       45 阅读
  7. 单元测试一(理论)-云计算2023.11-云南农业大学

    2023-12-05 16:04:05       64 阅读
  8. Kubernetes 常用命令

    2023-12-05 16:04:05       54 阅读
  9. [Python] 将文字转化到图片上显示

    2023-12-05 16:04:05       61 阅读