当前位置: 首页 > news >正文

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博客

http://www.lryc.cn/news/252866.html

相关文章:

  • 浪潮信息KeyarchOS的飞跃之路
  • C++基础 -41- 迭代器
  • zookeeper心跳检测 (实操课程)
  • 社区新零售:重塑零售业的全新模式
  • 北京华联BHGMall“宠粉模式”不断迭代,强体验注互动成行业UP主
  • 前端时间的失败总结复盘
  • Ribbon 负载均衡
  • 微服务实战系列之Cache(技巧篇)
  • 6.17验证二叉树(LC98-M)
  • 【Linux】编译器-gcc/g++与调试器-gdb的使用
  • Google Guava 散列工具使用详解
  • AIGC-文生视频
  • java中Collectors.groupingBy返回实例?
  • uniapp打包的h5项目多了接口调用https://api.next.bspapp.com/client
  • 探索跨境建站:如何借助软骨鱼SaaS平台快速搭建独立站
  • C语言-字符串输入输出
  • OpenHarmony 设备启动Logo和启动视频替换指南
  • Python中函数添加超时时间,Python中signal使用
  • 【C语言】递归详解
  • NSSCTF 文件上传漏洞题目
  • layui+ssm实现数据表格双击编辑更新数据
  • windows下DSS界面本地集成linkis管理台
  • 基于PaddleSeg开发的人像抠图web api接口
  • Python---面向对象的基本概念
  • cv2.threshold 图像二值化
  • CRM:提升营销效果的关键
  • AIGC: 关于ChatGPT中基于API实现一个StreamClient流式客户端
  • FutureTask
  • 【力扣热题100】207. 课程表 python 拓扑排序
  • 【滑动窗口】LeetCode2953:统计完全子字符串