位置: 编程技术 - 正文

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)

  • 化妆品销售公司简介
  • 老项目增值税简易计税
  • 财务状况说明表财务报表有什么区别
  • 内账收入按实际收到确认吗
  • 一般纳税人季报是哪几个月报税
  • 支付货代运费账务处理
  • 汇算清缴退款怎么入账
  • 公司为员工购买社保证明
  • 软件公司的销售
  • 员工离职如何申请赔偿
  • 银行代付工资如何做财务处理合适?
  • 免税农产品如何填报企业所得税季报
  • 毁损材料的损失怎么算
  • 管理费用的明细科目怎么写
  • 简易计税项目是所有发票都是普票吗
  • 向消费者支付佣金怎么算
  • 职工福利费在期间费用表中怎么填
  • 信息服务业税收优惠政策
  • 法人股东转让股权涉税
  • 小贷公司贷款的流程是什么
  • 城市地下建设
  • 装修公司购装修材料入什么科目?
  • windows10如何开启vt
  • 如何编辑受保护的word文档
  • 发放股票股利会增加流通在外股票的数量
  • 事业单位需要交企业所得税吗
  • 系统之家装机可靠吗
  • 在php中,字符串有哪些表示形式
  • 清算期间会计分录
  • 埃托沙国家公园发展观兽旅游的优势条件
  • php 上传图片
  • 金融服务企业按照是否办理存款业务
  • vue3如何使用axios
  • 应付账款零头怎么处理
  • phpcms模板下载
  • 增值税进项税额计算公式
  • 长期待摊费用的摊销分录
  • element表格表单
  • 百度编辑器使用方法
  • 申报表跟账不一致,如何调整账
  • dede织梦怎么转成zblog
  • 现金销售收入是什么意思
  • 小规模纳税人季度不超30万免增值税
  • 个税专项附加扣除标准2023
  • access2010怎么还原数据库
  • db2入门
  • 如何判断有无运费险
  • 增值税专用发票的税率是多少啊
  • mysql,if
  • 一般纳税人金税盘怎么清卡
  • 法人如何网上申请辞职手续
  • 什么是公司财务管理中的一个重要组成部分
  • 土地使用权的摊销计入在建工程
  • 跨年度冲红字发票账务处理
  • 以银行承兑汇票支付购买原材料款
  • 企业正常经营的条件
  • 股权转让的实质
  • 支付水电费会计等式
  • 票据利率定价调整方案
  • 材料报废 开什么发票
  • 银行承兑汇票托收凭证
  • mysql8.0二进制安装
  • xp系统如何开启共享文件夹
  • linux file-nr
  • rhel6.5安装教程
  • win7开机提示重启怎么办
  • windows打开
  • win10升级win1
  • python 归并排序算法
  • 批处理重命名文件名
  • linux echo echo
  • api/home/getmyregion
  • 国家税务总局电子发票
  • 176是哪的号码
  • 税控系统技术维护费抵税怎么申报
  • 网上怎么申报地税
  • 出口免税不退税主要适用于
  • 核定征收申报表填写
  • 税务登录 河北省地方税务局
  • 支付税控服务费的账务处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设