关于android.view.WindowLeaked(窗体泄露)的解决方案
虽然是小问题一个,但也困扰了我一段时间,现在记下来,给自己做个备忘,也可以给其他人一个参考
- view plaincopy to clipboardprint?
- 01-08 01:49:27.874: ERROR/WindowManager(473): Activity com.photos.MainActivity has leaked window android.widget.ImageButton@43e40d10 that was originally added here
- 01-08 01:49:27.874: ERROR/WindowManager(473): android.view.WindowLeaked: Activity com.photos.MainActivity has leaked window android.widget.ImageButton@43e40d10 that was originally added here
- 01-08 01:49:27.874: ERROR/WindowManager(473): at android.view.ViewRoot.<init>(ViewRoot.java:247)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at android.view.Window$LocalWindowManager.addView(Window.java:424)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at android.widget.PopupWindow.invokePopup(PopupWindow.java:828)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at android.widget.PopupWindow.showAtLocation(PopupWindow.java:688)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at com.photos.MainActivity.showCommonPopup(MainActivity.java:256)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at com.photos.MainActivity.access$3(MainActivity.java:255)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at com.photos.MainActivity$2.handleMessage(MainActivity.java:88)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at android.os.Handler.dispatchMessage(Handler.java:99)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at android.os.Looper.loop(Looper.java:123)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at android.app.ActivityThread.main(ActivityThread.java:4627)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at java.lang.reflect.Method.invokeNative(Native Method)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at java.lang.reflect.Method.invoke(Method.java:521)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
- 01-08 01:49:27.874: ERROR/WindowManager(473): at dalvik.system.NativeStart.main(Native Method)
按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢?
产生原因:
我们知道Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的对话框、PopupWindow也有相应的WindowManager窗体管理器。因为对话框、PopupWindown不能脱离Activity而单独存在着,所以当某个Dialog或者某个PopupWindow正在显示的时候我们去finish()了承载该Dialog(或PopupWindow)的Activity时,就会抛Window Leaked异常了,因为这个Dialog(或PopupWindow)的WindowManager已经没有谁可以附属了,所以它的窗体管理器已经泄漏了。
android.view.WindowLeaked一般会发生在Activity 与Dialog的显示。
Activity 中create 一个Dialog,若你先关闭Dialog再关闭Activity就是正常的,若你先关闭Activity再关闭Dialog就会报错这个android.view.WindowLeaked错误了。
分析这个原因是:Dialog是基于Activity而创建的:new ProgressDialog(this);this 就是Activity。 Activtity先finish,那Dialog就没得依附了,所以就会报android.view.WindowLeaked。
解决方法:
关闭(finish)某个Activity前,要确保附属在上面的Dialog或PopupWindow已经关闭(dismiss)了。
也可在OnCreateDialog()中创建Dialog,让系统去管理对话框
关于android.view.WindowLeaked(窗体泄露)的解决方案的更多相关文章
- android.view.WindowLeaked
08-30 13:17:05.645 25543-25543/com.tongyan.nanjing.subway E/WindowManager: android.view.WindowLeaked ...
- android.view.WindowLeaked解决办法
08-07 14:51:28.129: E/WindowManager(22277): Activity com.xxx.xxx.xxx.xxx.LoginActivity has leaked wi ...
- 发生android.view.ViewRoot$CalledFromWrongThreadException异常的解决方案
在Android平台下,进行多线程编程时,经常需要在主线程之外的一个单独的线程中进行某些处理,然后更新用户界面显示.但是,在主线线程之外的线程中直接更新页面显示的问题是 报异常:android.vie ...
- 1.Android常见异常:android.view.WindowLeaked 分析以及解决办法
在项目中遇到WindowManager: Activity has leaked window问题,其实在stackoverflow.com可以找到详细答案:http://stackoverflow ...
- Android Handler的内存泄露问题+解决方案
谈谈handler的内存泄露问题 再来看看我们的新建Handler的代码: private Handler mHandler = new Handler() { @Override public vo ...
- android.view.WindowLeaked的解决办法
按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢? 产生原因: 我们知道Android的每一个Activity都有个WindowManage ...
- android.view.ViewRoot$CalledFromWrongThreadException 异常的解决方案
https://blog.csdn.net/vincent_czz/article/details/7070354 https://stackoverflow.com/questions/210141 ...
- Android查缺补漏(View篇)--自定义 View 中 wrap_content 无效的解决方案
自定义 View 中 wrap_content 无效的解决方案 做过自定义 View 的童鞋都会发现,直接继承 View 的自定义控件需要重写 onMeasure() 方法,并设置 wrap_cont ...
- Android应用程序窗体View的创建过程
View类是android中非常重要的一个类.view是应用程序界面的直观体现,我们看到的应用程序界面就能够看作是View(视图)组成的. 那么我们应用程序的界面是怎么创建的呢,也就是应用程序的Vie ...
随机推荐
- 【BZOJ】【2502】清理雪道
网络流/上下界网络流 带下界的最小可行流…… 我SB了,跑网络流的时候是得从虚拟源0往出跑……而不是S…… Orz Hzwer /*********************************** ...
- [4] 圆锥(Cone)图形的生成算法
顶点数据的生成 bool YfBuildConeVertices ( Yreal radius, Yreal height, Yuint slices, YeOriginPose originPose ...
- max-sum-of-sub-matrix-no-larger-than-k
根据上一篇文章提到的参考文档: https://leetcode.com/discuss/109749/accepted-c-codes-with-explanation-and-references ...
- js常用的事件对象
事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event. ...
- 使用ECharts实现数据图表分析
一.ECharts介绍 实现对统计数据的图形分析之前用过JFreeChar,但它是用纯java实现编码繁琐且效果不佳,后来又使用过Fusioncharts 报表工具,它是基于Flash的图表组件.以X ...
- 老三星手机i9001刷机记录
家里的老的三星i9001,准备给我妈用,打算刷机,但又实在头疼那些复杂的刷机技术,昨天研究了一下,用比较简单的方法完成刷机,记录如下: 用卡刷比较简单,线刷不考虑 进入恢复模式的方法:1.电源+音量加 ...
- 揭开Faiss的面纱 探究Facebook相似性搜索工具的原理
https://www.leiphone.com/news/201703/84gDbSOgJcxiC3DW.html 本月初雷锋网报道,Facebook 开源了 AI 相似性搜索工具 Faiss.而在 ...
- UE如何将某些字符替换成换行
如下所示,我想要在所有;后面加个回车 就把;替换成;^r^n 效果如下所示
- 拓展javascript内置函数
1.获取字符串字节数 //获取字符串字节数 //方法一 /* */ String.prototype.getBytesLength = function () { var length = 0; fo ...
- 设置TreeView背景色
以下为在Csdn上找到的Treeview资源管理器代码,怎样改变其背景色?用:SendMessage SysTreeWindow,TVM_SETBKCOLOR,0,byval RGB(255,255, ...