文档章节

Handler内存泄露的改进(18)

f
 flyqilong
发布于 2016/02/27 21:39
字数 403
阅读 21
收藏 0
//平时我们用以下这种写法会存在内存泄露
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
	if (msg.what == 1) {
	   text_show.setText((String) msg.obj);
	  }
		};
	};
//所以为了改进这个,以下方式使用了弱引用的方式来声明,对上面的这种方法进行改进
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	// hangdler使用弱引用进行内存泄露优化
	private final MyHandler handler = new MyHandler(this);//this代表了传入的Activity

	// 建一个静态内部类
	private static class MyHandler extends Handler {
		// 弱引用对象
		WeakReference<MainActivity> weakReference;

		// 定义一个构造函数,传入一个MainActivity
		public MyHandler(MainActivity activity) {
			weakReference = new WeakReference<MainActivity>(activity);
		}

		// 实现Handler里面的方法
		@Override
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			// 通过软引用对到MainActivity对象进行引用
			MainActivity activity = weakReference.get();
			if (activity != null) {// 如果MainActivity没有退出,获取到的不是空你才进行下一步操作进行发送消息

			}
		}
	}
}


© 著作权归作者所有

f
粉丝 3
博文 93
码字总数 53900
作品 0
Android工程师
私信 提问
Android 中 Handler 引起的内存泄露

在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。通常我们的代码会这样实现。 1. public class SampleActivity extends Activity { 2. 3. private final Handler mL...

今晚打猴子
2015/08/06
221
2
Android内存泄漏总结和leakcanary使用

什么是内存泄漏? Android虚拟机的垃圾回收采用的是根搜索算法。GC会从根节点(GC Roots)开始对heap进行遍历。到最后,部分没有直接或者间接引用到GC Roots的就是需要回收的垃圾,会被GC回收...

翻滚吧李博
2017/12/22
0
0
Android使用Handler造成内存泄露的分析及解决方法

一、什么是内存泄露?   Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一...

android开发
2017/12/08
0
0
内存泄露从入门到精通三部曲之常见原因与用户实践

内存泄露从入门到精通三部曲之常见原因与用户实践 腾讯Bugly特约作者: 姚潮生 常见原因 1.集合类 集合类如果仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。如果这个集合类是...

腾讯小伙伴
2015/11/26
47
0
Android中使用Handler造成内存泄露的分析和解决

什么是内存泄露? Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不...

扔物线
2013/12/04
0
10

没有更多内容

加载失败,请刷新页面

加载更多

小白讲网络安全系列

注入攻击防护 XSS注入 SQL注入 命令注入 文件上传 文件解压缩 CSRF防护 对称加密 非对称加密 数字证书 数字签名 完整性校验 消息验证码 单向散列Hash函数 口令单向加密算法 审计日志 认证鉴权...

一刀
43分钟前
2
0
MYSQL 嵌套事务(SAVEPOINT) 与Spring 事务传播

摘要 savepoint 关键字可以实现嵌套事务。结合savepoint关键字,更方便理解spring的事务传播。 事务嵌套 初始化表脚本 drop table t;create table t(a int, primary key(a)); 开启事务 my...

liangxiao
45分钟前
3
0
Chrome OS 更新新版本可让Linux访问USB连接的Android设备

谷歌再次为Chrome OS带来了重大版本更新,使版本号达到了75。本次更新的一大亮点就是允许在Chrome OS上运行的Linux能够识别通过USB方式连接的Android设备,能够让用户使用Linux进行调试等等。...

linuxCool
昨天
13
0
聊聊feign的HystrixInvocationHandler

序 本文主要研究一下feign的HystrixInvocationHandler HystrixInvocationHandler feign-hystrix-10.2.3-sources.jar!/feign/hystrix/HystrixInvocationHandler.java final class HystrixInvo......

go4it
昨天
17
0
WPS 开启宏功能

前言 最近安装了个人版的WPS2019,使用Excel的宏功能时候发现不能使用了,网上下载了几个安装包都是比较旧的,不能使用。 找了个VB7.1的安装包,安装完了,重启WPS宏功能就可以使用了。 安装...

sharelocked
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部