文档章节

android handler 如何规避内存泄漏

天王盖地虎626
 天王盖地虎626
发布于 01/12 09:27
字数 163
阅读 3
收藏 0

直接上代码,使用两种办法

1,静态内部类

/**
 * 声明一个静态的Handler内部类,并持有外部类的弱引用
 */
private static class MyHandler extends Handler{

    private final WeakReference<ServerActivity> mActivty;

    private MyHandler(ServerActivity mActivty) {
        this.mActivty = new WeakReference<ServerActivity>(mActivty);
    }

    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        ServerActivity activity = mActivty.get();
        if (activity != null){
          //注意,这里的test,btn_closeServer都是成员变量
            activity.test ="hello";
            activity.btn_closeServer.setText(" 小样,你好吗");

        }
    }
}

2,

在activity 的ondestory()的时候,
调用mHandler.removeCallbacksAndMessages(null);

© 著作权归作者所有

共有 人打赏支持
天王盖地虎626
粉丝 21
博文 173
码字总数 7329
作品 0
南京
私信 提问
Android内存泄漏以及解决办法

Android程序开发中,如果一个对象已经不需要被使用了,本该被回收时,而这时另一个对象还在持有对该对象的引用,这样就会导致无法被GC回收,就会出现内存泄漏的情况。 内存泄漏时Android程序...

lanyu96
2018/11/09
0
0
Android中常见的内存泄漏及解决

1.Handler引起的内存泄漏 原因:该线程持有Handler的引用,而Handler也持有Activity的引用,这就导致了Activity不再使用时,GC回收不了Activity 解决:Handler持有的引用最好使用弱引用,在A...

牛板腩天下第一
2018/05/03
0
0
Android 性能篇 - 内存优化

内存优化是一个程序员的基本功。有时也要切合项目的实际需求来做选择。 一、解决所有的内存泄漏 内存泄漏概念: 不再使用的对象没有被回收,就是内存泄露。 单利泄漏 主要原因还是因为一般情...

技术小能手
2018/07/05
0
0
Android 面试(五):探索 Android 的 Handler

这是 面试系列 的第五期。本期我们将来探讨一下 Android 异步消息处理线程 —— Handler。 往期内容传递: Android 面试(一):说说 Android 的四种启动模式 Android 面试(二):如何理解 ...

nanchen2251
2017/11/21
0
0
WeakReference 在android中的应用

首先我们来看一段代码 public class AutoActivity extends Activity { Handler handler = new Handler(){public void handleMessage(android.os.Message msg) { };};@Overrideprotected void......

丁佳辉
2015/10/30
0
1

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的Table API及SQL Programs

序 本文主要研究一下flink的Table API及SQL Programs 实例 // for batch programs use ExecutionEnvironment instead of StreamExecutionEnvironmentStreamExecutionEnvironment env = Stre......

go4it
19分钟前
0
0
mysqldump应用

备份单个库/表数据或库/表结构 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 备份文件名 1、导出数据库为dbname的表结构(其中用戶名為root,密码为dbpasswd,生成的...

阿dai
26分钟前
0
0
shell脚本与Python的交互

1、Python针对shell获取传入,输出参数 传入:"$num" 例如: $0表示文件名,$1表示shell获取的第一个参数 输出:通过打印shell结果的方式,输出参数给Python。 例如: echo "{$iplist}",Python调...

一口今心
29分钟前
0
0
Euler 今日问世!国内首个工业级的图深度学习开源框架,阿里妈妈造

阿里妹导读:千呼万唤始出来!阿里妈妈正式公布重磅开源项目——图深度学习框架Euler。这是国内首个在核心业务大规模应用后开源的图深度学习框架。此次开源,Euler内置了大量的算法供用户直接...

阿里云官方博客
36分钟前
0
0
TiDB 3.0 Beta Release Notes

2019 年 1 月 19 日,TiDB 发布 3.0 Beta 版,对应 master branch 的 TiDB-Ansible。相比 2.1 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。 TiDB 新特性 支持 Vi...

TiDB
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部