当前位置: 首页 > news >正文

做图片推广的网站吗昵称小写 wordpress

做图片推广的网站吗,昵称小写 wordpress,手机页面设计软件,wordpress怎么批量移动分类案例4——异步任务内存泄漏 异步任务#xff0c;代指起子线程异步完成一些数据操作、网络接口请求等#xff0c;通常会使用以下API#xff1a; Runnbale#xff0c;Thread,线程池RxJavaHandlerThread 而这些异步任务很有可能操作内存泄漏#xff0c;下面我们以Rxjava为…案例4——异步任务内存泄漏 异步任务代指起子线程异步完成一些数据操作、网络接口请求等通常会使用以下API RunnbaleThread,线程池RxJavaHandlerThread 而这些异步任务很有可能操作内存泄漏下面我们以Rxjava为例演示此问题线程、线程池的问题也类似就不再一一演示了。 大多数项目的网络基础库传入Rxjava的是匿名Observer任务过多时未执行的任务的Observer会持有当前页面的引用造成内存泄漏接下来我们将演示这个场景 先提出几个问题 rxjava就会存在内存泄漏吗subscribe传入的匿名内部类Consumer实例不会造成内存泄漏吗异步任务返回时Activity已经处于onDestroyed状态Observer持有Activity引用Activity内存还能被回收吗 我们来验证一下rxjava的泄漏场景 假设我们在Activity#onResume方法里写了异步任务任务结束后设置view的属性在任务结束之前我们会调用Activity#finsh操作退出当前页面如下坨屎页面在12秒后实际已经处于onDestroyed状态了 为了演示问题我将延时时间增大写成12秒模拟异步任务返回的情况 Observable.timer(12000, TimeUnit.MILLISECONDS).subscribeOn(AndroidSchedulers.mainThread()).subscribe(new ConsumerLong() {Overridepublic void accept(Long aLong) throws Exception {dataBinding.layoutWelcome.setVisibility(View.GONE);...其他view 的引用}});测试步骤为 进入Activity立刻退出Activity一段时间之后观察Activity的内存是否被回收 我们得到一份hprof文件来分析下 老规矩先看下Instance-Details-Instance区域Activity的生命周期onDestroyed的值是否为true按步骤点击一看确实为true证明Activity已经离开窗口了处于销毁的生命周期中我们期望的时候垃圾回收器可以回收Activity占据的内存但事实上我们在Hprof文件看到了表明Activity占据的内存未回收。 紧着着我们面临下一个问题如何找到导致Activity内存泄漏的原因呢谁引用了Activity 点击Instance-Details-References区域我们可以很快得到答案按步骤点击Jump to Source 果然立刻跳转到内存泄漏所在的代码块终于我们通过分析hprof文件找到了问题所在: 那么如何解决此问题呢 rxjava提供了CompositeDisposable解决此类泄漏问题做法如下 创建实例对象 /*** 管理rxjava的任务及时释放不执行emitter#onNext*/public CompositeDisposable compositeDisposable new CompositeDisposable();用compositeDisposable实例去控制任务的生命周期 compositeDisposable.add(Observable.timer(12000, TimeUnit.MILLISECONDS).subscribeOn(AndroidSchedulers.mainThread()).subscribe(new ConsumerLong() {Overridepublic void accept(Long aLong) throws Exception {dataBinding.layoutWelcome.setVisibility(View.GONE);processIntent(getIntent());}}));页面生命周期onDestroyed期间清空任务 Overrideprotected void onDestroy() {super.onDestroy();compositeDisposable.clear();}总结 优化后的效果 优化后可看到Depth为空GC root 为空表明没有其他实例引用Activity了当垃圾回收器扫描到此实例该实例内存会被回收。 还记得开头的问题吗 rxjava就会存在内存泄漏吗答会存在consumer作为Activity的内部类持有当前Activity的引用任务未结束Activity已销毁就会出现内存泄漏subscribe传入的匿名内部类Consumer实例不会造成内存泄漏吗答只要是匿名内部类就很有可能内存泄漏上例子已经证明会产生内存问题。异步任务返回时Activity已经处于onDestroyed状态Observer持有Activity引用Activity内存还能被回收吗答无法被回收
http://www.w-s-a.com/news/876920/

相关文章:

  • 手机企业网站推广c 手机app开发
  • 网站建设需要多少天凡客建设网站稳定吗
  • 房天下网站建设女生说wap是什么意思
  • 网站开发安全机制北京做网站多少钱合理
  • 扁平化 公司网站建设大型视频网站需要的资金量
  • 免费建各种网站淄博网站建设yx718
  • 凡科网建站入门教程运城市网站建设
  • 黄浦区未成年人思想道德建设网站oa系统是什么
  • 微信里的网站怎么做电子商务网站开发平台
  • 易企秀网站怎么做轮播图网站建设张世勇
  • 网站备案幕布尺寸建立网页的几个步骤
  • pc网站页面找出网站所有死链接
  • 专业做seo的网站网站内连接
  • 阿里云网站开发服务器想开网站建设公司
  • 网站开发不足之处茶叶seo网站推广与优化方案
  • 响应式网站建设系统网站优化怎么做 有什么技巧
  • 班级网站做哪些方面wordpress标签 扩展
  • 如何在电商上购物网站Wordpress 域名授权插件
  • 网站建设后台怎么弄昆明如何做好关键词推广
  • 自己怎么做个网站优酷视频网站开发
  • 2015做网站前景电子商务营销的发展现状
  • 官方网站建设情况说明电子商务网站开发的形式有
  • 网站建设玖金手指排名11专业建站公司建站系统
  • 全球排名前十网站百度网站官网网址
  • 商家在携程旅游网站怎样做宣传做网站公司苏州
  • 芜湖做网站都有哪些广州音乐制作公司
  • 青岛好的网站制作推广注册公司流程步骤
  • 怎么制作营销网站模板wordpress苗木模板
  • 手机网站样例wordpress 排序
  • 济南网站建设手机网站开发人员需要去做原型吗