zoukankan      html  css  js  c++  java
  • android message两种方式

      前几天需要实现一个以太网功能就看了以太网的源码部分,看见了源码部分在消息处理时,发现有一些不同的地方:

      

      平时我在处理消息时:

      

      1、首先创建Handler对象:

      

      private Handler handler = new Handler(){

      public void handleMessage(Message msg) {

      switch (msg.what) {

      case 0:

      

      break;

      

      

      default:

      break;

      }

      };

      };

      

      2、然后是消息处理:

      

      private void TestHandlerMessage(){

      Message msg = new Message();

      msg.what = 1;

      handler.sendMessage(msg);

      }

      

      但是我看别人源码部分是是这样处理的:

      

      

      1、首先创建Handler对象:

      

      private Handler handler = new Handler(){

      public void handleMessage(Message msg) {

      switch (msg.what) {

      case 0:

      

      break;

      

      

      default:

      break;

      }

      };

      };

      

      

      2、然后是消息处理:

      

      private void obtainMessageTest(){

      Message msg = handler.obtainMessage();

      msg.what = 1;

      handler.sendMessage(msg);

      }

      

      通过比较我们会发现,这两种获取Message的实例的方法不一样,于是我看了源码,果然不一样:

      

      查看obtainMessage()源码:

      

      图1:

      

      进入obtain方法:

      

      图2:

      

      再进入objtain方法:

      

      图3:

    进入Message方法:

    图4:

    总结:

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

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

  • 相关阅读:
    nginx开启ssl模式
    安装nginx
    node的express框架
    使用Thumbnails工具对图片进行缩放,压缩
    正则
    VUE设置全局方法和属性
    js——XHR知识归纳
    页面资源加载过程
    Mongodb的增删改查
    Mongodb基本概念
  • 原文地址:https://www.cnblogs.com/gyqrenkai/p/5826317.html
Copyright © 2011-2022 走看看