文档章节

Handler内存泄露的改进(18)

f
 flyqilong
发布于 2016/02/27 21:39
字数 403
阅读 19
收藏 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
192
2
Android使用Handler造成内存泄露的分析及解决方法

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

android开发
2017/12/08
0
0
Android内存泄漏总结和leakcanary使用

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

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

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

扔物线
2013/12/04
0
10
内存泄露从入门到精通三部曲之常见原因与用户实践

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

腾讯小伙伴
2015/11/26
47
0

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
4
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
19
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部