Android异常一、异步任务导致的窗口句柄泄漏问题
来源:互联网 发布:4g网络制式有哪些 编辑:程序博客网 时间:2024/06/16 22:20
先贴异常:
05-05 10:36:41.009: E/WindowManager(4243): Activity com.tao.MyActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405241b0 that was originally added here05-05 10:36:41.009: E/WindowManager(4243): android.view.WindowLeaked: Activity com.tao.MyActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405241b0 that was originally added here05-05 10:36:41.009: E/WindowManager(4243): at android.view.ViewRoot.<init>(ViewRoot.java:265)05-05 10:36:41.009: E/WindowManager(4243): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)05-05 10:36:41.009: E/WindowManager(4243): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)05-05 10:36:41.009: E/WindowManager(4243): at android.view.Window$LocalWindowManager.addView(Window.java:424)05-05 10:36:41.009: E/WindowManager(4243): at android.app.Dialog.show(Dialog.java:241)05-05 10:36:41.009: E/WindowManager(4243): at android.app.ProgressDialog.show(ProgressDialog.java:107)05-05 10:36:41.009: E/WindowManager(4243): at android.app.ProgressDialog.show(ProgressDialog.java:95)05-05 10:36:41.009: E/WindowManager(4243): at com.unifable.activity.MySecretaryActivity.onCreate(MySecretaryActivity.java:50)05-05 10:36:41.009: E/WindowManager(4243): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)05-05 10:36:41.009: E/WindowManager(4243): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)05-05 10:36:41.009: E/WindowManager(4243): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)05-05 10:36:41.009: E/WindowManager(4243): at android.app.ActivityThread.access$1500(ActivityThread.java:117)05-05 10:36:41.009: E/WindowManager(4243): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)05-05 10:36:41.009: E/WindowManager(4243): at android.os.Handler.dispatchMessage(Handler.java:99)05-05 10:36:41.009: E/WindowManager(4243): at android.os.Looper.loop(Looper.java:130)05-05 10:36:41.009: E/WindowManager(4243): at android.app.ActivityThread.main(ActivityThread.java:3683)05-05 10:36:41.009: E/WindowManager(4243): at java.lang.reflect.Method.invokeNative(Native Method)05-05 10:36:41.009: E/WindowManager(4243): at java.lang.reflect.Method.invoke(Method.java:507)05-05 10:36:41.009: E/WindowManager(4243): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:906)05-05 10:36:41.009: E/WindowManager(4243): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:664)05-05 10:36:41.009: E/WindowManager(4243): at dalvik.system.NativeStart.main(Native Method)这是在做一个项目的时候遇到的问题:在第一界面的Activity中,为了避免程序假死带来的糟糕的用户体验,采用异步任务AsyncTask来访问网络,与服务器进行交互,并用ProgressDialog控件来告知用户当前的程序进度。在网上查了下别人的资料。才终于明白了原因。上面的异常的意思是:存在窗口句柄的泄漏,即未能及时的销毁某个PhoneWindow.为什么会出现这样的情况,因为,在异步任务里面已经发生了严重的错误,而导致Activity的强制关闭。Activity强制关闭了,可是ProgressDialog并没有dismiss()掉,所以出现了窗口句柄的泄漏。 而且,更严重的是,这个异常会覆盖我们在AsyncTask里面发生的真正异常,这往往会误导我们,把过多的精力放在查找所谓的内存泄漏的上面,而不是查找AsyncTask中出现的错误。参照别人的解决方法:本解决方法并不能真正的解决问题,但是在一定程度上可以将真正导致错误的异常信息显露出来。即重写Activity的onDestory()方法,在该方法中调用dismiss()来解除对ProgressDialog的引用。
- Android异常一、异步任务导致的窗口句柄泄漏问题(内存泄漏)
- Android异常一、异步任务导致的窗口句柄泄漏问题
- android异常——异步任务导致的窗口句柄泄漏问题
- android 异步弹出窗口 导致程序崩溃的问题
- 常见的导致Android内存泄漏问题
- 卸载ACE动态库导致句柄泄漏问题
- system调用导致子进程socket句柄泄漏问题分析
- android异常:dialog窗口句柄泄露
- 关于Android VideoView导致的内存泄漏的问题
- 关于Android VideoView导致的内存泄漏的问题
- zookeeper的句柄fd泄漏问题
- 再谈android内存泄漏—常见的八种导致 APP 内存泄漏的问题
- android异常问题笔记----导入依赖库导致的异常
- 异步加载导致的异常数据
- qt widget 窗口句柄的问题
- Android handler导致的内存泄漏
- Android Handler导致内存泄漏的解决方案
- Android AsyncTask导致的内存泄漏
- 抽象类
- hdu 2044 一只小蜜蜂...(很简单的递推)
- 一个全面的PHP整站防注入程序代码
- wince 串口操作Writefile问题
- S3C2440输入/输出端口
- Android异常一、异步任务导致的窗口句柄泄漏问题
- lwIP配置文件opt.h和lwipopts.h初步分析
- 运用递归思想求100以内整数的和
- STL源码剖析之STL概述
- jquery+html5 4--躲避子弹游戏2-聪明的子弹
- Matlab中巧用LaTex
- Spring MVC整合Mybatis实例
- Hibernate中悲观锁和乐观锁
- Parameters 和 Data 的共同点与不同点