位置: 编程技术 - 正文

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)

  • 土地增值税会计核算
  • 餐饮毛利率多少是赚钱的
  • 装修费用摊销是当月还是次月
  • 福利费属于管理费用的哪个明细
  • 小规模公司初期注销流程
  • 税务局个人开发票流程
  • 企业会计核算基础
  • 预收保费属于什么会计科目类别
  • 报关单上金额要和合同上一样吗
  • 劳务派遣公司一般纳税人税率是多少
  • 自然人税收申报显示申报失败:未选择纳税人
  • 商贸企业固定资产计提折旧吗
  • 怎么知道一个公众号有多少人关注
  • 代理费是指
  • 城镇土地使用税征收标准及计算方法
  • 挑主板要注意什么
  • win10怎么看已安装的驱动
  • 建筑企业总产值是什么
  • php+ mysql教程
  • 商业一般纳税人标准
  • 外销收入含税吗
  • 企业所得税的概述
  • 分手我不怕
  • .msc是什么意思
  • 应交营业税计算公式
  • 以旧换新方式销售货物,以实际收取的价格
  • vue播放rtsp视频流
  • php rediscluster
  • 场地租赁费需要计提吗
  • 基于opencv的人脸检测算法
  • aida理论包括哪些内容?
  • 深度学习之快速实现数据集增强的方法
  • tftp传输命令
  • 物流公司账务处理特点
  • php接口怎么调用
  • mongodb在windows上的安装
  • 批处理命令在windows操作中的典型应用
  • 固定资产改扩建和大修理的区别
  • 对于企业处理废水的建议
  • 用友t3制单日期定住不变
  • 专项附加扣除哪种申报方式好
  • 建筑安装服务的进项税有哪些
  • sqlserver经典书籍
  • 车辆计提折旧需要结转吗
  • 增值税专用发票电子版
  • 领用工程物资属于什么科目
  • 税费多一分钱怎么调回来?
  • 预付账款在何时可以转出
  • 包工包料如何核算成本
  • 个人独资企业的投资人以其个人财产对企业债务承担
  • 行政事业单位负责人应当对本单位内部控制
  • 旅游企业相关服务案例
  • 会计中的记账是什么意思
  • 利用phpmyadmin写shell的方法
  • win9怎么升级win10
  • vista正版怎么升级win7
  • fedora系统安装教程
  • win1021年更新
  • macbookpro屏幕显示
  • win 10文件
  • 怎样设置ie8
  • w10qq图标不显示
  • win10没有win8好用
  • linux中病毒了怎么处理
  • Android HandlerThread 实例
  • pycharm中文教程
  • vue是如何实现双向绑定的
  • js中的json
  • python 任务 调度 管理
  • jquery技巧
  • linuxtop命令详解
  • unity移动脚本代码
  • unity基于什么语言
  • Android自定义动画
  • 江苏国税电子税务局怎么申报
  • 深圳市国家税务局电子税务局
  • 国家规定的免税项目
  • 附加税申报表怎么做
  • 江苏城市规划
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设