位置: 编程技术 - 正文

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)

  • 期末有留底税额可需要进行账务处理
  • 房租确认后能不退押金吗
  • 处置公司车辆账务处理
  • 一般纳税人必须开13个点吗
  • 清算后剩余财产归一方所有
  • 展位费怎么入账
  • 资产负债表中应收账款
  • 调研费包括哪些科目
  • 物业采购主要做什么
  • 账面上现金过多的税务风险
  • 公司现金支付管理办法
  • 个体工商户能否开13的专票
  • 委托企业和受托企业是什么意思
  • 打折销售商品会计分录
  • 外币报表折算差额在会计报表中应作为
  • 发票报销哪些能用专票
  • 契税和车辆购置税的异同
  • 体检发票开公司还是个人
  • 增值税简易征收一览表
  • 汇算清缴退税调整利润表
  • 个人报销汽油费会计分录
  • 投标财务状况报告怎么提供
  • 职工福利费的计提标准
  • 税务自查补税后还有风险吗
  • 如何安全的处置电子邮件
  • avsched32.exe是什么进程 avsched32进程有什么作用
  • 公司绿化工程计入什么科目
  • windows11关机键怎么设置经典菜单
  • 餐费专用发票怎么抵扣
  • php循环结构有哪几种语句
  • 待摊费用计入哪里
  • php数组函数 菜鸟
  • 小规模纳税人开票限额是多少
  • 财务报表怎么判断盈亏
  • 破产企业发放工资怎么算
  • 大学生web网页实训心得体会
  • termux 安装
  • 流动资产金额
  • 小微企业怎么给员工交保险
  • 基于MATLAB的车牌识别
  • jsp使用教程
  • packet命令
  • 金蝶软件怎么查银行科目明细
  • 进出口总额用什么字母表示
  • 结转清理损失会计分录
  • php写在html里不行
  • php好用的cms
  • 去年多计提的工资今年怎么冲
  • 公司给员工交社保对公司有什么好处
  • 新办商贸企业是国企吗
  • 建筑施工企业适用什么会计制度
  • 红字发票开错可以重开吗
  • 计提应收账款坏账准备属于谨慎性吗
  • 新会计制度对会计人员的影响
  • 应收款为负数怎么理解这个概念
  • 采购人员费用计入什么科目
  • 损益类科目借贷怎么记
  • 临时账户过期了怎么办
  • 辞退福利是入工资还是福利费
  • 收到发票就是付款了吗
  • 外购入库暂估补差单
  • mysql5.6下载
  • windowsxp关闭窗口操作方法有哪些
  • linux 解压.z
  • win7系统怎么用键盘开机
  • macos high sierra深色模式
  • WinCfg32.exe - WinCfg32是什么进程
  • windows7英雄联盟老是崩溃
  • win10教育系统
  • centos7 wol
  • ins pc版
  • windows live language setting
  • win10无法使用内置管理员账户
  • node.js使用教程
  • python利用matplotlib库绘制六边形
  • JavaScript While 循环 教程
  • 重庆市电子发票样式
  • 安康市税务局党玲玲
  • 审批制改为备案制有什么区别
  • 国家税务局增值税发票平台
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设