位置: 编程技术 - 正文

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)

  • 已抵扣进项税额转出怎么申报
  • 增值税发票上数量与单价
  • 会计凭证借贷方向
  • 小规模纳税人增值税减免账务处理
  • 减免税额和抵免税额在什么时候扣除
  • 销项税额转出减去还是加上
  • 税收抵免与税收的区别
  • 金融资产转回
  • 无形资产减值是否可以转回
  • 企业所得税税前扣除和不扣除的区别
  • 中外合资经营企业的经营期限
  • 施工企业暂估成本税前扣除
  • 分公司亏损总公司账务处理
  • 出口公司要交哪些税费
  • 施工企业开专票还是开普票好
  • 7月1日发票新规定
  • 个人所得税法规定可减征个税的情形有
  • 浅谈收入与成本的关系
  • 专项资金需要交印花税吗
  • 公户转账备注写错会查吗
  • 只有专票没有普票
  • 买车的增票可以分两次吗
  • 销售净利率怎么求
  • 新公司税控盘购买流程
  • macos monterey支持哪些显卡
  • 签证费入什么科目
  • 拍卖公司财务
  • yii框架教程
  • php数组实现
  • 2022年苹果iphone14一个几个颜色
  • 土地使用税的税目写什么
  • PHP:Memcached::fetchAll()的用法_Memcached类
  • 营改增之前没有增值税吗
  • 新购固定资产账务处理
  • 环形链表入口节点
  • kb4592440安装失败
  • PHP:iconv_mime_decode()的用法_iconv函数
  • 城镇土地使用税纳税义务发生时间
  • 收到投标保证金现金流量
  • phpcms v9安装教程
  • 其他非流动资产是会计科目吗
  • 国税纳税申报表下载
  • 小微企业能申请留抵退税吗?
  • python中的函数库
  • 没有进项票开了销项票后期有了进项票可以吗
  • 小微企业利润表数据
  • 业务招待费进项票可以抵扣吗
  • 超市的库存商品是怎么记账的
  • 所得税会计核算要点及程序有哪些
  • 对公账户转到个人账户怎么做账
  • 投资性房地产转为存货
  • 银行代发的工资公司要求返还然后发一半
  • 原材料用于在建工程要进项转出吗
  • 收到员工社保
  • 以前年度房租付了没计提
  • 一般纳税人购进商品的会计分录
  • 报销餐费属于什么费用
  • 个体户未进行抄报税怎么处罚
  • 多收客户购置税怎么处理
  • 个体工商户怎样申请开票
  • 原始凭证的会计分录
  • 材料物资核算应由谁负责
  • mysql数据聚合
  • mysql如何优化性能
  • sqlserver日志已满
  • win2008r2下载
  • 快速清理朋友圈的方法
  • windows10怎样安装
  • mac怎么录制
  • mac如何在桌面显示我的电脑
  • linux服务器dns配置
  • 新手菜鸟什么意思
  • 龙芯芯片组
  • Cocos2dx -lua QuickXDev拓展
  • Unity3D游戏开发毕业论文
  • uv纹理编辑器贴图移动
  • 使用权资产
  • 黑龙江税务局副局长
  • 东莞为什么这么多人
  • 2020年砂石
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设