位置: 编程技术 - 正文

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)

  • 个税汇缴常见问题
  • 个税申报的收入扣除社保吗
  • 协定税率的简称
  • 偷税漏税是指什么税种
  • 交强险怎么报销流程
  • 现金盘亏无法查明原因计入什么科目
  • 红字发票已抵扣和未抵扣是什么意思
  • 银行存款缴纳所得税费用会计分录
  • 工伤私了赔偿
  • 广告公司好进吗
  • 车船税没有发票可以税前扣除吗
  • 研发支出转入管理费用摘要
  • 公司内部核算调拨价差的账务怎么做处理?
  • 城市建设综合配套费征收管理办法
  • 单位预付卡
  • 生产用水的会计分录
  • 增值税普票没有地址电话开户行信息可以吗
  • 现金收款能开专用发票吗
  • 本地开的住宿费可以退吗
  • 纳税申报方式怎么修改
  • 个税系统数据没有备份怎么办
  • 运费营改增时间
  • 营改增服务业税负下降
  • 备用金借款单怎么写
  • configureandwatch
  • deepin如何
  • 报纸公示具有什么法律效应
  • 与资产相关的政府补助,如果相关资产在使用寿命结束时
  • mrmactl.exe
  • 广告性质的赞助支出可以在企业所得税前扣除吗
  • dat文件转换成wps表格
  • chat gpt介绍开头
  • php实现微信发红包的方法
  • 转让土地使用权的条件是什么
  • hpzts04.exe是什么进程 有什么作用 hpzts04进程查询
  • 土地价款扣除会计分录
  • 合同的第三方指什么
  • 未确认融资费用借贷方向
  • 黄石国家公园的占地面积
  • 国税一证通
  • 使用vscode开发vue例子
  • vue3使用高德地图
  • python3.9.4怎么用
  • phpcms添加内容
  • 建行对账单回签平啥意思
  • javascript数据类型分为哪两类
  • 持有投资期间,被投资单位编制合并报表
  • EOFError:EOF when reading a line
  • 含税与不含税的计算公式
  • 企业间借款利息收入
  • 非盈利组织固定资产金额标准最新规定
  • 分公司是否具有独立承担民事责任的能力
  • 现金比率升高
  • 建筑行业每月报税
  • 结转完期间损益是不是可以结账了
  • 施工单位结算
  • 09年前的固定资产
  • 房地产公司员工购房
  • 红字专用发票怎么做账
  • 无形资产计入待摊费用
  • 核定征收小规模做汇算清缴吗
  • 营业成本包括三大费用如何称呼
  • sql分页查询怎么实现
  • sqlgun
  • windows xp运行
  • 发生意外错误无法完成您的请求
  • linux的tar命令详解
  • Windows移动中心里没有无线网络
  • xp系统怎样设置无线网络连接
  • Ubuntu远程桌面连接
  • centos fio
  • mstore.exe - mstore是什么进程 有什么用
  • cocos做游戏
  • linux curl用法
  • LinearLayout layout_weight解析
  • 怎么查税务专管员是谁的名字
  • 天津本田天虹90摩托车库存
  • 国税手工发票
  • 铁路运费发票可以抵扣几个点
  • 陕西省税务局袁小平简介
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设