位置: 编程技术 - 正文

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)

  • 土地价款抵扣增值税
  • 税务网上清卡流程
  • 城建税计税依据扣除增值税期末留抵
  • 收购发票加计扣除
  • 机动车发票怎么入账
  • 个人劳务所得税税率表最新2022
  • 已经缴纳的税款可以撤回吗
  • 应纳税额滞纳金
  • 员工向公司借的备用金到年底未还清
  • 应付账款从质保开始算吗
  • 建筑业出售废旧电脑取的收入如何申报
  • 知识产权服务项目
  • 汇算清缴调增税金及附加
  • 电费发票可以抵扣进项吗
  • 行邮税税率表2023
  • 发票代码和发票号码在一起怎么办
  • 什么货物出口最多
  • Win11怎么设置自启动软件
  • 暂估入账收入会计分录
  • adb命令linux命令的区别
  • 升级w10系统
  • php string函数
  • 电脑故障检测与维护方法
  • git可以管理二进制文件吗
  • 支付代销手续费缴纳增值税吗
  • 装机电源怎么装
  • php魔术方法的讲解与使用
  • 城建税征税范围广吗
  • 调整固定资产折旧年限,折旧额的变化
  • php gtk
  • annaconda安装opencv
  • 黑沙滩是什么意思
  • 金阁寺屋顶
  • 营改增后小规模纳税人标准
  • phpjson
  • javascript动画教程
  • 小规模纳税人开专票需要交税吗
  • php curl_multi_init
  • 交易性金融资产的入账价值
  • cmsv6无法连接服务器
  • 小企业会计准则外币业务
  • 现金流量表中有应收账款吗
  • 工商登记备案在哪查
  • mongodb视频教程
  • 业务招待费汇算清缴怎么填表
  • 绿化养护合同交不交印花税
  • 小微企业需要专职安全员吗
  • 金税盘申报流程视频
  • 个体户开票超额
  • 个体工商户税种及税率
  • 进项税额有留底怎么做分录
  • 餐厅打包盒收费标准通知
  • 出口货物没有进项发票用什么平台申报
  • 一个公户从农业银行开户
  • 存货抵债如何做分录
  • 公司向个人借款怎么做账
  • 录入期初余额的操作方法
  • 工程施工的保险费的账务处理
  • 利润分配未分配利润是净利润吗
  • mysql语句性能优化
  • mysql 5.5 5.6
  • sql 截取字符串某个字符之后
  • ubuntu复制文件到当前文件夹
  • ubuntu安装教程20.04 u盘
  • ubuntu启动vncserver
  • centos7脚本
  • 雨林木风Windows10
  • WIN10系统中读卡器驱动的正确安装程序
  • unity跨脚本调用函数
  • python中map函数功能
  • 通过Tabs方法基于easyUI+bootstrap制作工作站
  • Node.js中的全局对象有
  • iframe的替代方案
  • 收集什么比较好
  • 国家税务总局山西省电子税务局
  • 广西壮族自治区图书馆
  • 百旺数据恢复
  • 成都税务局网站首页
  • 如何查询房屋契税是否退还
  • 员工持股平台税务稽查
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设