位置: 编程技术 - 正文

android hander如何避免内存泄露(android的handler)

编辑:rootadmin

推荐整理分享android hander如何避免内存泄露(android的handler),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓中handler,安卓handler使用,android handler looper,android的handle,android的handler,安卓handler用法,安卓handler用法,安卓handler用法,内容如对您有帮助,希望把文章链接给更多的朋友!

在使用Android Handler的时候,可能会遇到编译器给我们这样的警告:

This Handler class should be static or leaks might occur

造成这个警告的原因是handler持有外层类(Activity等)的引用,同时消息队列中的Message对handler也持有引用,这样就造成一些资源不能回,从而可能造成内存泄露。

解决这个警告的办法即让handler不持有外部类的引用,怎么做到这一点呢,即将Handler设置为静态内部类就行了,将外部类(Activity等)传递给Handler,在Handler中建立弱引用(WeakReference).

android hander如何避免内存泄露(android的handler)

为了能够使以后更好的使用Handler-Message机制,我这里对其进行了封装,使用方法见下。先看一下代码。

CBHandler.java

package me.codeboy.android.common.component;import android.os.Handler;import android.os.Message;import java.lang.ref.WeakReference;import me.codeboy.android.common.app.CBActivity;/** * Created by yuedong.lyd on 6/7/. * <p> * 构建防止内存泄露的handler * </p> */public class CBHandler { /** * 防止handler对activity有隐式引用,匿名内部类不会对外部类有引用 */ public static class UnleakHandler extends Handler { private final WeakReference<CBActivity> activity; public UnleakHandler(CBActivity activity) { this.activity = new WeakReference<CBActivity>(activity); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(activity.get() == null) { return; } activity.get().processMessage(msg); } }}

CBActivity

package me.codeboy.android.common.app;import android.app.Activity;import android.os.Bundle;import android.os.Message;import me.codeboy.android.common.component.CBHandler;/** * Created by yuedong.lyd on 6/8/. */public abstract class CBActivity extends Activity{ public CBHandler.UnleakHandler handler ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); handler = new CBHandler.UnleakHandler(this); } /** * 处理消息 * @param msg */ public abstract void processMessage(Message msg);}

在使用中,我们只需自己的Activity继承CBActivity即可,在onCreate时自动创建UnleakHandler的实例handler,从CBHandler的代码中我们也可以看出来,UnleakHandler自动将收到的消息交给CBActivity中的processMessage进行处理。我们只需要在发送消息的时候使用handler变量发送即可,处理在processHandler中处理即可。

更多文章请访问小胖轩.

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android之EventBus概述及源码解析(雷惊风) 前段时间公司在项目中用到了Android三方开源库—EventBus。一直没时间总结,只能抽周末点时间总结一下,其中也借鉴了一些前辈的智慧。好了废话不多

Android Camera探究之路——起步 AndroidCamera探究之路——起步Camera在手机中有着举足轻重的地位,不管是二维码还是照片、识别,都离不开摄像头,本文将对Android中的Camera进行全面解析

Android自定义View圆环带文字进度条 项目原型图中有这样的一种进度条由于懒得找第三方(找到的不一定合用,有找的时间自己也就写了一个)自定义所需要的属性?xmlversion="1.0"encoding="utf-8

标签: android的handler

本文链接地址:https://www.jiuchutong.com/biancheng/374360.html 转载请保留说明!

上一篇:[置顶] Android实现网络图片app([置顶]公主大人接下来是拷问时间31)

下一篇:Android之EventBus概述及源码解析(雷惊风)(android observer)

  • 当月认证了进项票没用完下个月还可以用吗
  • 消费税的会计处理分录
  • 公司没有账目违法吗
  • 存货减值税务处理
  • 记账凭证红字冲销
  • 税费退库怎么做凭证
  • 退税发票误勾选怎么撤销
  • 固定资产可以不设置残值吗
  • 政府扶持资金要还吗如村委借给企业对吗
  • 小规模纳税人销售额
  • 公司出售厂房的增值税允许抵扣吗
  • 公司持有的房产税
  • 租房发票的税由谁承担
  • 待处理财产损益科目
  • 员工个人学历教育费用不能在企业所得税前列支
  • 税务登记都需要什么
  • 已付款收到发票但没有做计提凭证
  • 投资收益科目应用
  • 坏账准备年末结账要结清吗
  • 长租押金多少合适
  • mac怎么传文件到百度网盘上
  • 汇款手续费应由谁承担
  • 如何知道家里网络是多少兆
  • 账务处理程序有什么
  • 购入专利权的会计科目
  • 项目融资中风险有哪些
  • mac如何打开蓝牙
  • 橡皮树的扦插方法和注意事项
  • 融资性售后回租承租方为什么不交税
  • ab计数器指令程序
  • php获取操作系统
  • 出借和出租包装物的区别
  • 偿还应付账款会使得资产报酬率增加吗
  • tomcat服务器在哪个位置
  • 结转出口退税分录
  • 低值易耗品费用计入什么科目
  • 损益类科目明细账图片
  • 持有至到期投资科目被取消了吗
  • 织梦使用教程
  • 会务费什么企业可以开
  • 无进项可以开票么
  • 生育津贴是怎么申请
  • 年底要结转净利润怎么算
  • 企业净利润流量怎么算
  • 税务局返还的个税手续费是否纳税
  • 借支单是会计算做还是出纳做
  • 产品的包装费属于什么科目?
  • 工程材料票抵扣比例
  • 已认证发票退回说明模板
  • 企业哪些部门
  • 工程施工费怎么开票
  • 矿山运输设备的点检绩效考核
  • mysql性能分析语句
  • sqlserver 查看表
  • 连接mysql数据出错1045
  • windows注册表简单应用
  • hosts文件不起作用
  • win10如何设置视频缩略图
  • netbeui怎么安装
  • win2000系统安装教程
  • wmiprvse.exe是什么程序
  • gpedit.msc无法打开
  • win10命令提示符哪里打开
  • Linux系统配置网关
  • 老旧的诗琴五个琴谱大全
  • mac使用磁盘工具的快捷键
  • qcwlicon.exe - qcwlicon是什么进程 有何作用
  • windows7正版验证办法
  • centos7 rpm包安装
  • OfcPfwSvc.exe - OfcPfwSvc是什么进程 有什么用
  • perl中的$1
  • 3d网络游戏开发方法
  • nodejs中的事件循环的执行顺序
  • 将Bitmap用Base64转码成字符串,再解码回来出现黑色背景的问题原因及解决办法。
  • unicode 字符百科
  • html+css网站设计基础教程
  • js点击
  • 全面解析少女时代关系
  • 国家税务总局司长
  • 青岛税务局局长是什么级别?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设