`
aijuans
  • 浏览: 1565596 次
社区版块
存档分类
最新评论

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

阅读更多

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

  1. view plaincopy to clipboardprint?  
  2. 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    
  3. 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    
  4. 01-08 01:49:27.874: ERROR/WindowManager(473):     at android.view.ViewRoot.<init>(ViewRoot.java:247)    
  5. 01-08 01:49:27.874: ERROR/WindowManager(473):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)    
  6. 01-08 01:49:27.874: ERROR/WindowManager(473):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)    
  7. 01-08 01:49:27.874: ERROR/WindowManager(473):     at android.view.Window$LocalWindowManager.addView(Window.java:424)    
  8. 01-08 01:49:27.874: ERROR/WindowManager(473):     at android.widget.PopupWindow.invokePopup(PopupWindow.java:828)    
  9. 01-08 01:49:27.874: ERROR/WindowManager(473):     at android.widget.PopupWindow.showAtLocation(PopupWindow.java:688)    
  10. 01-08 01:49:27.874: ERROR/WindowManager(473):     at com.photos.MainActivity.showCommonPopup(MainActivity.java:256)    
  11. 01-08 01:49:27.874: ERROR/WindowManager(473):     at com.photos.MainActivity.access$3(MainActivity.java:255)    
  12. 01-08 01:49:27.874: ERROR/WindowManager(473):     at com.photos.MainActivity$2.handleMessage(MainActivity.java:88)    
  13. 01-08 01:49:27.874: ERROR/WindowManager(473):     at android.os.Handler.dispatchMessage(Handler.java:99)    
  14. 01-08 01:49:27.874: ERROR/WindowManager(473):     at android.os.Looper.loop(Looper.java:123)    
  15. 01-08 01:49:27.874: ERROR/WindowManager(473):     at android.app.ActivityThread.main(ActivityThread.java:4627)    
  16. 01-08 01:49:27.874: ERROR/WindowManager(473):     at java.lang.reflect.Method.invokeNative(Native Method)    
  17. 01-08 01:49:27.874: ERROR/WindowManager(473):     at java.lang.reflect.Method.invoke(Method.java:521)    
  18. 01-08 01:49:27.874: ERROR/WindowManager(473):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)    
  19. 01-08 01:49:27.874: ERROR/WindowManager(473):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)    
  20. 01-08 01:49:27.874: ERROR/WindowManager(473):     at dalvik.system.NativeStart.main(Native Method)    
  21.    


按字面了解,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,让系统去管理对话框

欢迎大家访问我的个人网站 萌萌的IT人
1
0
分享到:
评论

相关推荐

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

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

    android获取根View的方法

    在Android开发中,根View(Root View)是布局文件中最高层次的视图容器,它包含并管理着应用界面中的所有子视图。根View通常是LinearLayout、RelativeLayout、FrameLayout等布局组件,它决定了子视图的排列方式和...

    计算器代吗

    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”指的是Android平台上的一个关键组件——ViewPager,以及它依赖的Android Support Library v4。ViewPager是Android SDK中用于实现页面滑动效果的控件,常见于...

    ctrip.android.view_1608.apk

    ctrip.android.view_1608.apk

    com.google.android.webview

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

    android.jar源码

    通过深入研究`android.jar`源码,开发者不仅可以更好地理解和利用Android API,还能提高解决问题的能力,为打造高效、稳定、安全的Android应用打下坚实基础。无论是初学者还是资深开发者,都应该对这个宝藏库进行...

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

    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 主流的图片浏览的全屏缩放效果SmoothImageDemo软件源码

    安卓开发-Android 主流的图片浏览的全屏缩放效果SmoothImageDemo软件源码: import java.io.File; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content....

    android.support.design.widget.TabLayout示例

    implementation 'com.android.support:design:版本号' } ``` 记得替换`版本号`为当前支持库的最新版本。 2. **添加TabLayout到布局** 在XML布局文件中,使用`TabLayout`标签来创建一个TabLayout实例: ```xml...

    谈谈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;

    最新版android-support-v4.jar

    这是最新版的android-support-v4.jar,大小1MB多,比其它那种几百K的要大,因为这是最新的android-support-v4.jar,有最新的android.support.v4.view.animation类,现在是2015年10月,这是截至目前最新的jar包

    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秒钟自动关闭界面

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

Global site tag (gtag.js) - Google Analytics