`
407827531
  • 浏览: 1060587 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

关于android.view.WindowLeaked(窗体泄露)的解决方案

    博客分类:
  • Bugs
阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

虽然是小问题一个,但也困扰了我一段时间,现在记下来,给自己做个备忘,也可以给其他人一个参考

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 中 android.view.WindowLeaked的解决办法

    Android 中 android.view.WindowLeaked的解决办法 按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢? 产生原因: 我们知道Android的每一个Activity都有个...

    计算器代吗

    package com.android.xiong.gridlayoutTest; import java.math.BigDecimal; import java.util.regex.Pattern; import com.android.xiong.gridlayoutTest.R.id; import android.os.Bundle; import android...

    android viewpager android-support-v4.jar

    android viewpager android-support-v4.jar

    ctrip.android.view_1608.apk

    ctrip.android.view_1608.apk

    问题:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original

    问题:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a 我的场景是 LinearLayout.LayoutParams params11 = new LinearLayout.LayoutParams(264, LinearLayout....

    Android代码-SimpleTagImageView

    compile 'net.wujingchao.android.view:simple-tag-imageview:1.0.1' Maven &lt;!-- you should configure jcenter repository--&gt; net.wujingchao.android.view simple-tag-imageview 1.0.1 aar Developed ...

    com.google.android.webview

    android system webview 适配系统&gt;=5.0

    解决Eclipse 无NDK 选项问题com.android.ide.eclipse.traceview_23.0.2.1259578.jar

    解决Eclipse 无NDK 选项问题,将com.android.ide.eclipse.traceview_23.0.2.1259578.jar 包放到Eclipse -&gt;plugins文件夹下!

    xlistview代码

    package com.example.androidtest.view; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewTreeObserver...

    Android代码-MyToast

    import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class MyToast { public static void show(Context context, String text, ...

    Android Menu和ListView 整合设计 源码

    import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.Toast; ...

    android 最新版android-support-v4.jar

    注意,这是最新版的android_support-v4.jar包,里面包含了最新添加进去的android.support.v4.view.animation.类,今天是2015年10月7号,这是截至到今天位置最新的android-support-v4.jar

    com.google.android.webview_79.0.3945.93-394509365_minAPI21(x86)(nodpi).apk

    安卓内置的浏览器内核,适用于x86构架,如:华硕ze551ml....,最低系统要求安卓5.0.........................................................................................................................

    谈谈Android里的Context的使用

    &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" &gt; android:...

    Android代码-HJDynamicListItems

    ceated : 2010/05/18 maker : hojun, baek ...import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.SimpleAdapter;

    MP3Player多媒体

    android;多媒体开发;android应用开发揭秘。 import java.io.File; import java.io.FilenameFilter; import java.io.IOException;...import java.util.ArrayList;...import android.app....import android.view.SubMenu

    Q1050062.zip C#panel内窗体控制panel切换另一个窗体

    Q1050062.zip C#panel内窗体控制panel切换另一个窗体 https://ask.csdn.net/questions/1050062 问题的回答

    Android实现3秒钟自动关闭界面

    看图说话,代码简单,注释清晰,一目了然: 下载整个项目代码。    3秒过后进入下一界面: 代码: ...import android.view.View; import android.widget.Button; import android.widget.ImageV

    多点触控显示

    import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; ...

Global site tag (gtag.js) - Google Analytics