美文网首页
android这样创建Message可以减少内存开销

android这样创建Message可以减少内存开销

作者: 0dce86ba3565 | 来源:发表于2016-08-10 22:10 被阅读0次

我们一般创建message是这么创建的

Message msg = new Message();


但是这样创建message可以减少内存开销

Message msg = handler.obtainMessage();


为什么会这样呢?我们来看看源码,关键源码如下:

//普通的实例化方法

public Message(){}


//obtainMessages实例化方法

public final Message obtainMessage(){

      return Message.obtain(this);

}

public static Message obtain(Handler h){

Message m=obtain();

m.target=h;

return m;

}


public static Message obtain(){

synchronized(sPoolSync){

Message m=sPool;

sPool=m.next;

m.next=null;

sPoolSize--;

return m;

}

return new Message();

}


总结:

上面源码中说得很明白:从整个Messge池中返回一个新的Message实例,在许多情况下使用它,因为它能避免分配新的对象

如果是这人的话,那么通过调用obtainMessage方法获取Message对象就能避免创建对象,从而减少内存的开销了。

相关文章

  • android这样创建Message可以减少内存开销

    我们一般创建message是这么创建的 Message msg = new Message(); 但是这样创建me...

  • 线程池

    线程池的定义 减少资源创建 => 减少内存开销,创建线程占用内存 降低系统开销 => 创建线程需要时间,会延迟处理...

  • 结构型模式-享元模式

    开发时,创建对象池,共享对象,减少系统开销 享元模式: 主要用于减少创建对象的数量,以减少内存占用和提高性能。它提...

  • 24种设计模式之单例模式(Singleton Pattern)

    单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免...

  • 单例模式的基本实现方式

    单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;如果一个...

  • UITableViewCell复用与高度计算

    UITableViewCell的重用机制   为了减少内存开销,UITableView只会创建一屏幕(或一屏幕多一...

  • 巧用设计模式性能优化

    1.享元模式 PS:只为提升系统性能而生的设计模式 可以节省重复创建对象的开销 减少内存需求,GC压力降低,增加反...

  • unity技术分享:对象池

    对象池是一种Unity经常用到的内存管理服务,它的作用在于可以减少创建每个对象的系统开销。 在Unity游戏开发的...

  • Android中线程池使用

    为什么使用线程池 减少创建线程数量,提高APP性能 (减少创建和销毁线程的性能开销) 节省开销,防止并发线程过多,...

  • Android 性能优化笔记

    内存 目的: 无内存泄漏, 降低内存开销, 避免内存抖动; 减少非并发GC的运行次数 工具: LeakCanary...

网友评论

      本文标题:android这样创建Message可以减少内存开销

      本文链接:https://www.haomeiwen.com/subject/msmjsttx.html