【小随笔】Android中Message的创建——New Message与Handle#obtainMessage()

private void TestHandlerMessage(){

  Message msg = new Message();

  msg.what = 1;

  handler.sendMessage(msg);

}

在很多Android工具书上,经常出现与上面代码相似的片段。

而在真正接触项目,需要对性能有更好把握的时候又能看到这样的代码段:

private void obtainMessageTest(){

  Message msg = handler.obtainMessage();

  msg.what = 1;

  handler.sendMessage(msg);

}

结论:两种创建Message的方法其实都有一定的用户基础,但是在需要考量性能的项目中还是使用Handler#obtainMessage()为佳。因为obtainMessage()方法并不是创建新Message而是从MessagePool中取出一个空闲Message供开发者使用。

【小随笔】Android中Message的创建——New Message与Handle#obtainMessage()

时间: 2024-10-22 05:35:54

【小随笔】Android中Message的创建——New Message与Handle#obtainMessage()的相关文章

Android中为APP创建快捷方式的原理(自己的理解)

我们首先来看Android中为APP创建快捷方式的原理: 从图上可以看出,Android大致分7步完成快捷方式的创建: 第一步:Android系统的launcher程序会调用它的pickShortcut()方法去启动系统的pickActivity程序(应用): 第二步:pickActivity程序(应用)启动后会调用它的CheckIntentFilter()方法,去在系统中寻找可以创建快捷方式的应用有哪些,并且列举出来.只要第三方                     App用<Intent-

Android中解析与创建XML文件

Android中解析与创建XML文件 在Android中对XML的操作有多种方式,常见的有三种方式:SAX.DOM和PULL方式. DOM方式会把整个XML文件加载到内存中,在PC上常使用DOM的方式. 但是在性能敏感的设备上,主要采用的是SAX的方式,但是缺点是嵌套多个分支的时候处理不是很方便. 而PULL的方式类似SAX方式,同样很节省内存. 因此,本文章中只提供PULL的方式解析与创建XML文件. 基础类 本例中使用的实体类的定义如下: public class CAddress impl

(八)Android中Handler、Looper、Message、MessageQueue的关系

一.Handler.Looper.Message.MessageQueue类功能简介 1.1 Message 消息类,定义了发送给Handler对象的包含描述和二进制数据对象的消息对象.这个类比较重要的字段: what:消息码用于接收者识别是啥消息,每个Handler对象有自己的命名空间用于消息码,所以不需要担心不同的Handler对象识别消息码冲突.在消息处理中,我们可以根据这个字段的不同的值进行不同的处理. arg1/ arg2:用来存放整型值,开销小 obj:任意的Object类型对象传递

android中通过ServerSocket创建端口问题

============问题描述============ 在Activity中通过new ServerSocket(9090)创建了一个服务端口,为何通过netstat命令查看时该端口并没有打开? 然后在客户端无论如何也连接不上,这肯定的 代码: server=new ServerSocket(12345); System.out.println("ip:"+server.getLocalSocketAddress()+"----port: "+server.get

关于android中数据库的创建以及基础的增删改查的相应操作

这里主要是掌握一些基本的相应的知识,具体的是阿金是等到明天在进行. 相应的知识点如下: 对于数据库中的一些常识.SQLite 没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使用.并且在保存数据时,支持null(零) .integer (整数).real (浮点数字) .text (字符串文本)和blob(二进制对象)5种数据类型.但实际上SQLite也接收varchar(n). char(n).decimal(p,s)等数据类型,只不过在运算或保存时会转换成对应的5种数

android 中通过代码创建控件

package bvb.de.openadbwireless.circle; import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.view.View; impor

【转载】如何在Android中避免创建不必要的对象

在编程开发中,内存的占用是我们经常要面对的现实,通常的内存调优的方向就是尽量减少内存的占用.这其中避免创建不必要的对象是一项重要的方面. Android设备不像PC那样有着足够大的内存,而且单个App占用的内存实际上是比较小的.所以避免创建不必要的对象对于Android开发尤为重要. 本文会介绍一些常见的避免创建对象的场景和方法,其中有些属于微优化,有的属于编码技巧,当然也有确实能够起到显著效果的方法. 使用单例 单例是我们常用的设计模式,使用这种模式,我们可以只提供一个对象供全局调用.因此单例

在Android中利用SQLite实现对数据的增删查改

停更了一天,I'm back again~~当我们需要操作大量的数据时,我们首先想到的当然是数据库,因为可以通过简单的语句实现数据的增删改查,在Android中,我们不使用SQL或者ORACLE,我们使用SQLite,因为它占用资源更少,而语句格式与SQL语句一样. 首先,我们来在Android中实现数据库的创建与增删改查,引用数据库的类时,不再继承常用的Activity类,而是继承Android中的SQLiteOpenHelper,创建一个构造方法,四个参数分别是(Context contex

【android】Android中图形图片及处理相关Api的小总结

开发应用中图片的使用是必不可少的,Android系统提供了丰富的图片支持功能.我们除了可以使Drawable资源库,还可以使用Bitmap.Picture类去创建图片,也可以使用Canvas.Paint.Path类等去绘制我们满意的图片.在自定义控件时,这些API使用尤为常见.因此,小编觉得有必要简单的做个小总结. 那就先从Bitmap和BitmapFactory开始吧 Bitmap和BitmapFactory BitmapFactory       Bitmap代表一张位图.BitmapDra