前几天需要实现一个以太网功能就看了以太网的 源码 部分,看见了源码部分在消息处理时,发现有一些不同的地方: 平时我在处理消息时: 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对象就能避免创建对象,从而减少内存的开销了。

更多相关文章

  1. Android自定义view绘制顺序及相关原理
  2. Android(安卓)JNI 编程
  3. android 在源码中编译工程的方法
  4. Building Custom Components/建立自定义组件
  5. Android(安卓)更新UI的两种方法——handler和runOnUiThread()
  6. 使用泛型方法在Java中安全地进行强制类型转换
  7. [Android]使用RecyclerView替代ListView(一)
  8. 设置android编码格式与包的引入格式于源码一致
  9. Android(安卓)Dialog 弹出的时候标题栏闪烁一下的处理方法

随机推荐

  1. Android(安卓)实现联网(二)——java.net漫
  2. android shape和selector共用按钮样式
  3. Android官方Toolbar自定义高度最靠谱的解
  4. 如何美化android程序:自定义ListView背景
  5. 搭建Flutter环境及创建第一个demo
  6. Android(安卓)性能优化 APM 平台搭建
  7. Android系统架构的详细解析——很全面
  8. android和linux开源社区的分裂
  9. Android申请百度API时发布版SHA1改怎么填
  10. Android之MVC模式