`
muyu114
  • 浏览: 129133 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

关于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)
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已经没有谁可以附属了,所以它的窗体管理器已经泄漏了。


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

分享到:
评论

相关推荐

    Android 中 android.view.WindowLeaked的解决办法

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

    计算器代吗

    基于android的计算器代码 ...import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.GridLayout; import android.widget.TextView;

    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....

    com.google.android.webview

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

    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 ...

    解决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代码

    import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.animation.DecelerateInterpolator; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener...

    Android代码-MyToast

    import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class MyToast { public static void ...

    Android Menu和ListView 整合设计 源码

    import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListView; import android....

    android 最新版android-support-v4.jar

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

    谈谈Android里的Context的使用

    第3步:新建一个View命名为MainView.java就是我们Activity现实的View.代码如下: package com.tutor.application; import android.app.Activity; import android.content.Context; import android.util....

    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

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

    功能如标题所示,简单的android的3秒倒计时关闭界面或点击关闭,如果3秒内点击就不会再开启自动关闭。看图说话,代码简单,...import android.view.View; import android.widget.Button; import android.widget.ImageV

    多点触控显示

    import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.Window; import android.widget.ImageView; public class MyMultitouchDemo extends...

    Android代码-texturevideoview

    TextureVideoView for ...extends android.view.TextureView instead of a android.view.SurfaceView thus allowing proper view animations as described in the Property Animation API guide API addition: Call se

    Android之泡泡效果bubble.rar

    import android.view.View.OnTouchListener; import android.widget.FrameLayout; import android.widget.ImageView; public class BubbleExplosion extends Activity { private FrameLayout fl; private ...

Global site tag (gtag.js) - Google Analytics