报错:WindowManager: android.view.WindowLeaked: Activity has leaked window so was originaly added here

Android 中 android.view.WindowLeaked的解决办法 Android 中 android.view.WindowLeaked的解决办法 按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢? 产生原因: 我们知道Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的对话框、PopupWindow也有相应的WindowManager窗体管理器。因为对话框、PopupWindown不能脱离Activity而单独存在着,所以当某个Dialog或者某个PopupWindow正在显示的时候我们去finish()了承载该Dialog(或 立即下载

首先贴上具体的全部报错信息:

E/WindowManager: android.view.WindowLeaked: Activity com.liangzi.demo.sdkdemo.MainActivity has leaked window com.quantum.sdk.AVCallFloatView{4337e6c0 V.E..... ......I. 0,0-120,120} that was originally added here
                                                      at android.view.ViewRootImpl.<init>(ViewRootImpl.java:381)
                                                      at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:258)
                                                      at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)

 //这一行崩掉的就是windowmanager.add(view,params);                                                  ***at com.quantum.sdk.Util.FloatWindowUtil.show(FloatWindowUtil.java:81)***
                                                      ***at com.quantum.sdk.fragment.LoginViewFragment.loginCallback(LoginViewFragment.java:435)***
                                                      ***at com.quantum.sdk.fragment.LoginViewFragment.httpCallback(LoginViewFragment.java:348)***
                                                      ***at com.quantum.sdk.fragment.QTBaseFragment$1.httpCallback(QTBaseFragment.java:72)***
                                                      ***at com.quantum.sdk.Util.QTHttpHandler$1.run(QTHttpHandler.java:88)***
                                                      at android.os.Handler.handleCallback(Handler.java:733)
                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                      at android.os.Looper.loop(Looper.java:136)
                                                      at android.app.ActivityThread.main(ActivityThread.java:5314)
                                                      at java.lang.reflect.Method.invokeNative(Native Method)
                                                      at java.lang.reflect.Method.invoke(Method.java:515)
                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:680)
                                                      at dalvik.system.NativeStart.main(Native Method)

以上这个窗口泄漏问题,已经足足的困扰了我2个星期,百度了很多次,发现网上都是说的是当前windowManager所依赖的activity关闭后,其依赖的dialog或者popWindow还在展示中,没有关闭,才造成了窗口(windowLeaked)的泄漏.这只是其中的一种情况.
我的是属于第二种情况:在主线程中,布局动态加载,销毁的时候导致windowmanager通过AddView()方法添加的View没有依存,导致窗体泄露.
重点:解决方法
windowManager.removeViewImmediate( View view);——->removeViewImmediate()是通知View立刻调用View.onDetachWindow()

以下是转载的一位大神的解答:

Android.view.WindowLeaked按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢?

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

2.还有一种情况就是下面代码,来创建窗口渲染的时候(本人遇到这种情况)

我们在做UI相关的代码时有时候会碰到WindowLeak,也就是所谓的窗体泄露,泄露的原因是因为androidUI操作在主线程中操作,但是我们会需要在一些线程或者异步任务中操作UI界面元素的需求,那么这个时候可能会出现类似问题。我在做浮动窗口的时候碰到了这个问题,浮动窗口需要用到WindowManager,windowManger又是一个activity的一个变量,它依存于Activity,当横竖屏切换或者activity销毁的时候这个变量会销毁。销毁的时候导致windowmanager通过AddView()方法添加的View没有依存,导致窗体泄露。那么问题来了,为什么这里会泄露了?

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

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

最后附上作者:原来链接的地址
http://blog.youkuaiyun.com/sharp36/article/details/53611619

直流无刷BLDC六步换相“电流环”、“速度环”的关系 4、在电流闭环模式下,电机的电流严格按给定电流运行,负载大小变化时,电流不变,电机速度跟随负载非正常变化,例如速度严重“超速”时,需要“限速”保护,这个任务是“速度环”的,这时“速度环”会根据设定的速度上限,控制触发器,将电机速度迅速将下来,电流降下来,在“限速”保护期间,“电流环”失去对触发器的控制作用;3、在电流闭环模式下,电机的电流严格按给定电流运行,负载大小变化时,电流不变,电机速度跟随负载正常变化,“速度环”对速度大小的控制作用是没有的;6、很多人想当然,“电流环”不工作,电机“电流”哪里来的? 阅读详情

相关推荐

OPTISYSTEM实战指南:线性调频连续波激光雷达系统仿真设计

本文提供了一份基于OPTISYSTEM软件的线性调频连续波激光雷达系统仿真实战指南。文章详细阐述了从软件界面熟悉、核心参数设置,到发射端、信道模型、相干接收端完整系统搭建的全过程,并介绍了性能优化与高级仿真技巧,旨在帮助读者快速掌握利用OPTISYSTEM进行低成本、高效率激光雷达系统设计与验证的方法。

weixin_29288313的博客 297

WindowManager: android.view.WindowLeaked:

WindowManager: android.view.WindowLeaked:

yuerliang的专栏 1864

Android AI Agent集成实战:架构设计与自动化技能开发

AI Agent(人工智能代理)是一种能够感知环境、自主规划并执行任务以达成目标的软件实体。其核心原理在于结合大语言模型的推理能力与工具调用(Tool Calling)技术,使应用从被动响应转向主动服务。在移动开发领域,这项技术的价值在于为应用注入“智能大脑”,实现跨应用自动化与个性化交互,从而显著提升用户体验和操作效率。具体到Android平台,其应用场景广泛,例如自动填写表单、智能聊天辅助、个性化工作流优化等。本文聚焦于Android AI Agent的工程化落地,深入探讨了如何利用Accessibil

weixin_42636895的博客 661

WindowManager:android.view.WindowLeaked

窗体泄露 来源: 按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢? 解决办法: 关闭(finish)某个Activity前,要确保附属在上面的Dialog或PopupWindow已经关闭(dismiss)了。 错误日志 : 2019-06-05 15:45:07.008 7915-7915/com.cloudy.jun.test E/W...

mylike_45的专栏 1682

pagerank算法详解

目录一、pagerank定义两个重要假设二、pagerank算法公式定义计算演示矩阵化计算三、存在的两个问题问题1.Dead Ends问题2.Spider Traps 一、pagerank定义 入链数:指向该节点的链接数 出链数:由该节点指出的链接数 以上图为例:A的入链数为1,出链数为3,所以将由A指向其他节点的边权重设置为1/3,表示A访问B、C、D节点的概率均为1/3 两个重要假设 数量假设:在Web图模型中,如果一个页面节点接收到的其他网页指向的入链数量越多,那么这个页面越重要。 质量假设:指向

gary101818的博客 4万+

飞书云文档API操作详细介绍

开通云文档API、python程序调用飞书api、飞书获取app_id和app_secret、

Brother_ning的博客 1万+

android.view.WindowLeaked解决方法

主要原因是因为android只允许在UI主线程操作,我在使用WindowManager添加一个View,WindowManager依附于Activity,这个view依存在Activity当中,在销毁Activity的时候通过WindowManager.addView()的方法添加的View就没有了依存,导致了窗体泄露。View不能独立存在,必须依附于Window。问题解决,这两个方法也明白了又什么区别。然后关闭当前的这个Activity的时候遇到了WindowLeak这个问题,也就是所谓的窗体泄露。

weixin_42504805的博客 1386

墨水屏高效开发:架构、开源库与实战优化指南

嵌入式显示技术中,电子墨水屏以其类纸观感和超低功耗特性,在电子书阅读器、智能办公本及工业仪表等场景中占据独特地位。其工作原理基于微胶囊电泳技术,仅在画面刷新时消耗电能,静态显示时功耗近乎为零,这带来了极致的续航优势。为实现流畅的交互体验,开发者需构建分层渲染架构,通过硬件抽象层统一驱动接口,并引入帧缓冲与差异比较算法智能决策局部刷新区域,从而大幅降低刷新延迟与功耗。开源库如GxEPD2和LVGL为墨水屏适配提供了关键支持,结合波形文件管理与电源优化策略,能有效解决残影与卡顿问题。本文聚焦于eink墨水屏高效

weixin_42545636的博客 411

Android中View not attached to window manager错误,android.view.WindowLeaked的解决方案

原因基本都是Dismiss对话框的时候,Activity已经不再存在。 常发生这类Exception的情形都是,有一个费时的线程操作,需要在显示一个Dialog,在任务开始的时候显示一个对话框,然后当任务完成了再Dismiss对话框,如果在此期间如果Activity因为某种原因被杀掉且又重新启动了,那么当Dialog调用Dismiss的时候WindowManager检查发现Dialog所属的Ac

telenewbie的专栏 1619

Claude Skills 深度讲解

阶段 1:Function Call(2023)├─ 大模型可以调用外部工具├─ 问题:缺乏对任务的深度理解└─ 局限:工具调用简单线性阶段 2:MCP 上下文工程(2024)├─ 大模型有了更丰富的上下文和工具├─ 问题:仍然需要手动编写复杂的 Prompt└─ 局限:每次对话都需要重新加载上下文阶段 3:Claude Skills(2025)├─ 大模型有了「能力模块」的概念├─ 可以动态加载、组合、执行专门的工作流├─ 真正实现了「知识的模块化和复用」

u013134676的博客 1464

H3C无线控制器AC与第三方认证系统集成实现企业级Portal短信认证方案

本文详细阐述了如何将H3C无线控制器(AC)与第三方认证系统集成,构建企业级Portal短信认证方案。该方案通过手机号作为临时凭证,实现了访客网络的实名追溯、权限控制与专业体验。文章深入解析了方案原理、H3C AC的关键配置步骤、第三方系统对接要点及短信网关选型避坑指南,为企业提升网络安全管理与访客服务质量提供了完整、可行的实战指导。

a3b4c5的博客 195

WindowManager: android.view.WindowLeaked

报错内容: 05-20 11:47:49.939 26318-26318/com.fanfareknowledge.pickupkinsfolk E/WindowManager: android.view.WindowLeaked: Activity com.fanfareknowledge.familytree.ui.web.WebActivity has leaked window android.widget.ZoomButtonsController$Containe...

一个人的暗 1161

ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII

1,设置EMIO方式引出ETHE1 2,从GMII过度到RGMII GMII: 发送 gmii_tx_clk gmii_tx_d[7:0] gmii_tx_en gmii_tx_er 接收 gmii_rx_clk gmii_rx_d[7:0] gmii_rx_dv gmii_rx_er RGMII: 发送 tx_clk tx_d[3:0] tx_ctrl 接收 rx_clk rx_d[3:0] rx_ctrl 首先数据总线从时钟单边沿采样8bit转变为了双边沿采样4bit,从88E1

wangjie36的博客 1万+

关于 android.view.WindowLeaked: 窗体泄露

android.view.WindowLeaked: 窗体泄露 所以当某个 Dialog (或 PopupWindow) 正在显示的时候去 finish() 了承载该 Dialog (或 PopupWindow )的 Activity 时,就会抛 Window Leaked 异常了,如上述代码框起来的部分,执行finish()结束Activity的时候,并不会结束这个case代码块,而导致穿透执行下一个case而创建了Dialog。

qq_50726065的博客 1813

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WindowManager: android.view.WindowLeaked: Activity has leaked window com.android.internal.policy.imp

01-06 15:29:19.097 8060-8060/com.toge.ta E/WindowManager: android.view.WindowLeaked: Activity com.toge.ta.activity.Make2Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorVie

zrbcsdn的专栏 4313

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

E/WindowManager: android.view.WindowLeaked: Activity com.xxx.xxx.xxx has leaked window com.android.i

今天运行代码,程序没有崩溃,并遇到以下错误提示: E/WindowManager: android.view.WindowLeaked:Activity com.xxx.xxx.xxx has leaked windowcom.android.internal.policy.PhoneWindow$DecorView

zhagnjianlong888的博客 4351

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WindowManagerGlobal: android.view.WindowLeaked 及WebView页面点击无效

05-24 17:45:48.090 2811-2811/com.yuanzong.lawmachine E/WindowManagerGlobal: android.view.WindowLeaked: Activity com. xxxx has leaked window com.android.internal.policy.impl.PhoneWindowDecorView1d1ff6d5V.E.....R......D0,0−870,284thatwasoriginallyaddedherea.

LeonShih的博客 1万+

Android Exception: View not attached to window manager

最近公司项目上线之前用Monkey测试,一直出这个错误:Exception: View not attached to window manager。特别纠结,后来总结了下,就是在Activity消失的情况下,还调用dialog的dismiss方法就出这个错误了。我的解决办法是: 判断当前的activity.isFinishing() + !=null + isShowing(),这三种方式去防

学习记录 1437

安卓 android.view.WindowLeaked解决方法

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

hnlgzb的专栏 1333

Android中WindowManager : android.view.WindowLeaked: Activity xxx.wxapi.WXPayEntryActivity has leaked

今日在做微信充值的时候莫名的出现了这个问题,搞得我不知所措,错误日志如下: 根据报错的具体日志定位到到了我所封装的一个网络工具类里面的这个地方 (百度这样说道)错误提示指向项目中的一个progressDialog。经过多方查资料,发现产生这个错误的原因:我们通常会在执行异步任务前开一个进度提示弹出框(progressDialog),异步任务结束后关闭这个progressDialog。当...

迷茫的小亮仔的博客 758

android.view.WindowLeaked 的解决方案

leak 是泄露的意思,WindowLeaked 应该是窗体泄露, 碰到这种异常的原因我觉得是:在某个Dialog或者某个PopupWindow正在显示的时候我们去finish()了承载该Dialog(或PopupWindow)的Activity,所以抛出这种异常,因为这个Dialog(或PopupWindow)的WindowManager已经没有谁可以附属了,所以它的窗体管理器已经泄漏了。 an...

豆子的博客 3645

关于WindowManager的一个小问题was originally added here

使用windowManager时,关闭所在activity时,报错解决方案

AlwaysDebug的博客 3326

E/WindowManager: android.view.WindowLeaked: Activity com.xxx.xxx.xxx

1. 错误描述 E/WindowManager: android.view.WindowLeaked: Activity com.xxx.xxx has leaked window DecorView@c16f1d7[FaceShapeActivity] that was originally added here 2. 错误原因 应该是Activity中的Dialog,PopupWindow等弹出框在Acitivity关闭的时候,这些弹出框没有关闭造成的; 3. 解决方案 查找Activity中

牛八少爷的专栏 1324

Dialog使用时has leaked window...that was originally added here错误

错误提示android.view.WindowLeaked: Activity … has leaked window … that was originally added here分析:经常在应用中需要处理一些耗时的工作,诸如读取大文件、访问网络资源等。为了避免因程序假死而带来的糟糕用户体验,通常我们可以通过线程+Handler或者Android提供的AsyncTask来解决该问题,并一般以Di

Maxi的专栏 1万+

android.view.WindowLeaked: Activity has leaked window com.android.internal.p

android.view.WindowLeaked: Activity  has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{b3e23088 V.E..... R.....ID 0,0-480,243} that was originally added here 这个错误原因是因此一些对话框在act

Crazy Android 9688

has leaked window DecorView@dea56c0[SplashActivity] that was originally added here 的悬赏解决

看了标题:这个不就是窗体泄露么,这么简单的问题,还悬赏, 先别急着下定论!错误代码如下:WindowManager: android.view.WindowLeaked: Activity com.wcyq.gangrong.ui.activity.SplashActivity has leaked window DecorView@dea56c0[SplashActivity] that was...

wolfking0608的博客 7758
上一篇: ProgressDialog的简易处理
下一篇: Android中常见的限定符
掉头发程序员
博客等级 码龄10年 40粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值