<div class="it610-blog-content-contain" style="font-size: 14px"></div>

异常场景:

经常在应用中需要处理一些耗时的工作,诸如读取大文件、访问网络资源等。为了避免因程序假死而带来的糟糕用户体验,通常我们可以通过线程+Handler或者Android提供的AsyncTask来解决该问题,并一般以ProgressDialog等提示性控件来告知用户当前的程序进度。而标题中描述的异常则会常常出现在这样的场景中,并且往往掩盖了导致异常的真正的罪魁祸首。



问题原因:

从异常描述中,大致的意思是存在窗口句柄泄露,即未能及时销毁某个PhoneWindow。而这往往误导了我们,把过多的精力放在查找所谓的内存泄露上了。其实存在这么一种情况,即因我们在非主线程中的某些操作不当而产生了一个严重的异常,从而强制当前Activity被关闭。而在关闭的同时,却没能及时的调用dismiss来解除对ProgressDialog等的引用,从而系统抛出了标题中的错误,而掩盖了真正导致这个错误的异常信息。



解决方法之一:

本解决方法并不能真正的解决问题,但是在一定程度上可以将真正导致错误的异常信息显露出来。即重写Activity的onDestroy方法,在方法中调用dismiss来解除对ProgressDialog等的引用。

更多相关文章

  1. AndroidStudio3.4+ 导入旧版本moudle出现各种问题,禁用androidx
  2. Gradle 多渠道打包的使用和错误分析
  3. java.lang.RuntimeException: Binary XML file line #52: You mu
  4. WARNING: unable to write jarlist cache file
  5. Ubuntu 10.04 LTS 安装 sun-java6-jdk 错误解决办法
  6. Error inflating class androidx.recyclerview.widget.RecyclerV
  7. 编译错误:com.android.dex.DexException:
  8. Caused by: java.lang.ClassNotFoundException[android错误解决
  9. java.lang.ClassCastException: java.util.ArrayList$SubList ca

随机推荐

  1. 宝可梦与Chrome联名,推出官方插件“皮卡丘
  2. 七十万权游粉丝请愿重拍第八季,这个请愿网
  3. C语言10.0
  4. JUC的世界II
  5. 安装Pinpoint实现全链接监控
  6. 这样规范写代码,同事直呼“666”
  7. powershell关于掷骰子问题
  8. 计算变量长度
  9. 运维人员如何构建知识体系
  10. JS对象与流程控制