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对象就能避免创建对象,从而减少内存的开销了。

  • 相关阅读:
    实验3 简单的分支与循环结构 2.利用循环计算n个圆柱体体积。
    实验 3 简单的分支与循环结构 第一题 编写求圆面积的程序,要求当输入的半径r<=0时,提示输入错误,要求r为浮点型,r的数值是动态的由键盘输入
    心得3
    作业 3 应用分支与循环结构解决问题
    实验5 函数
    实验1 题目2
    第三,四章学习心得
    第2章学习心得
    第一章学习心得
    5-3
  • 原文地址:https://www.cnblogs.com/gyqrenkai/p/5826317.html
Copyright © 2011-2022 走看看