Most visited

Recently visited

Added in API level 1

Message

public final class Message
extends Object implements Parcelable

java.lang.Object
   ↳ android.os.Message


定义一条消息,其中包含可以发送到Handler的描述和任意数据对象。 该对象包含两个额外的int字段和一个额外的对象字段,允许您在许多情况下不分配。

虽然Message的构造函数是public的,但获得其中一个的最好方法是调用 Message.obtain()Handler.obtainMessage()方法之一,这会从循环对象池中提取它们。

Summary

Inherited constants

From interface android.os.Parcelable

Fields

public static final Creator<Message> CREATOR

public int arg1

如果只需要存储几个整数值,则arg1和arg2是使用 setData()的低成本替代方案。

public int arg2

如果只需要存储几个整数值,则arg1和arg2是使用 setData()的低成本替代方案。

public Object obj

要发送给收件人的任意对象。

public Messenger replyTo

可选的Messenger,可以发送对此消息的回复。

public int sendingUid

指示发送消息的uid的可选字段。

public int what

用户定义的消息代码,以便收件人可以识别此消息的内容。

Public constructors

Message()

构造函数(但获取消息的首选方法是致电 Message.obtain() )。

Public methods

void copyFrom(Message o)

使这个消息像o。

int describeContents()

描述此Parcelable实例的封送表示中包含的特殊对象的种类。

Runnable getCallback()

检索处理此消息时将执行的回调对象。

Bundle getData()

获取与此事件关联的任意数据的捆绑包,如果需要,可以懒惰地创建它。

Handler getTarget()

检索将收到此消息的 Handler实现。

long getWhen()

返回此消息的目标交付时间,以毫秒为单位。

boolean isAsynchronous()

如果消息是异步的,则返回true,这意味着它不受 Looper同步障碍的影响。

static Message obtain(Handler h)

obtain()相同,但在返回的消息上设置 目标成员的值。

static Message obtain(Handler h, int what)

obtain() ,但设置了两个 目标 ,并在Message 什么成员的值。

static Message obtain(Handler h, Runnable callback)

obtain(Handler)相同,但在返回的消息上分配回调Runnable。

static Message obtain(Message orig)

obtain()相同,但将现有消息(包括其目标)的值复制到新消息中。

static Message obtain(Handler h, int what, int arg1, int arg2, Object obj)

obtain() ,但设定 目标内容 ,ARG1,ARG2,OBJ成员的值。

static Message obtain(Handler h, int what, int arg1, int arg2)

obtain() ,但将 目标的价值观, 什么 ,ARG1,ARG2和成员。

static Message obtain(Handler h, int what, Object obj)

obtain()相同,但设置 目标什么obj成员的值。

static Message obtain()

从全局池中返回一个新的Message实例。

Bundle peekData()

像getData()一样,但不会懒惰地创建Bundle。

void recycle()

将Message实例返回到全局池。

void sendToTarget()

将此消息发送到由 getTarget()指定的处理 getTarget()

void setAsynchronous(boolean async)

设置消息是否是异步的,这意味着它不受 Looper同步障碍的影响。

void setData(Bundle data)

设置任意数据值的包。

void setTarget(Handler target)
String toString()

返回对象的字符串表示形式。

void writeToParcel(Parcel dest, int flags)

将此对象平铺到一个包裹中。

Inherited methods

From class java.lang.Object
From interface android.os.Parcelable

Fields

CREATOR

Added in API level 1
Creator<Message> CREATOR

arg1

Added in API level 1
int arg1

如果只需要存储几个整数值,则arg1和arg2是使用 setData()的低成本替代方案。

arg2

Added in API level 1
int arg2

如果只需要存储几个整数值,则arg1和arg2是使用 setData()的低成本替代方案。

obj

Added in API level 1
Object obj

要发送给收件人的任意对象。 当使用Messenger跨进程发送消息时,如果它包含框架类的一个Parcelable(不是应用程序实现的一个),那么它只能是非空的。 其他数据传输使用setData(Bundle)

请注意,此处的 FROYO对象在 FROYO版本之前 FROYO

replyTo

Added in API level 1
Messenger replyTo

可选的Messenger,可以发送对此消息的回复。 这种使用方式的语义取决于发送者和接收者。

sendingUid

Added in API level 21
int sendingUid

指示发送消息的uid的可选字段。 这仅适用于由Messenger发布的消息; 否则,它将是-1。

what

Added in API level 1
int what

用户定义的消息代码,以便收件人可以识别此消息的内容。 每个Handler都有自己的消息代码名称空间,因此您不必担心与其他处理程序发生冲突。

Public constructors

Message

Added in API level 1
Message ()

构造函数(但获取消息的首选方法是致电 Message.obtain() )。

Public methods

copyFrom

Added in API level 1
void copyFrom (Message o)

使这个消息像o。 执行数据字段的浅表副本。 不复制链接列表字段,也不复制原始消息的时间戳或目标/回调。

Parameters
o Message

describeContents

Added in API level 1
int describeContents ()

描述此Parcelable实例的封送表示中包含的特殊对象的种类。 例如,如果对象将在writeToParcel(Parcel, int)的输出中包含writeToParcel(Parcel, int) ,则此方法的返回值必须包含CONTENTS_FILE_DESCRIPTOR位。

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance.

getCallback

Added in API level 1
Runnable getCallback ()

检索处理此消息时将执行的回调对象。 该对象必须实现Runnable。 这由目标 Handler正在接收此消息来调度它。 如果未设置,则该消息将被分派给接收处理程序的handleMessage(Message)

Returns
Runnable

getData

Added in API level 1
Bundle getData ()

获取与此事件关联的任意数据的捆绑包,如果需要,可以懒惰地创建它。 通过调用setData(Bundle)设置此值。 请注意,当通过Messenger跨进程传输数据时,您需要通过Bundle.setClassLoader()在Bundle上设置ClassLoader,以便在检索它们时可以实例化对象。

Returns
Bundle

也可以看看:

getTarget

Added in API level 1
Handler getTarget ()

检索将收到此消息的Handler实现。 该对象必须实现Handler.handleMessage() 每个处理程序都有自己的消息代码的名称空间,因此您不必担心与其他处理程序发生冲突。

Returns
Handler

getWhen

Added in API level 1
long getWhen ()

返回此消息的目标交付时间,以毫秒为单位。

Returns
long

isAsynchronous

Added in API level 22
boolean isAsynchronous ()

返回true如果消息是异步的,这意味着它不会受到 Looper同步障碍。

Returns
boolean True if the message is asynchronous.

也可以看看:

obtain

Added in API level 1
Message obtain (Handler h)

obtain()相同,但在返回的消息上设置 目标成员的值。

Parameters
h Handler: Handler to assign to the returned Message object's target member.
Returns
Message A Message object from the global pool.

obtain

Added in API level 1
Message obtain (Handler h, 
                int what)

obtain() ,但设置了两个 目标 ,并在Message 什么成员的值。

Parameters
h Handler: Value to assign to the target member.
what int: Value to assign to the what member.
Returns
Message A Message object from the global pool.

obtain

Added in API level 1
Message obtain (Handler h, 
                Runnable callback)

obtain(Handler)相同,但在返回的消息上分配回调Runnable。

Parameters
h Handler: Handler to assign to the returned Message object's target member.
callback Runnable: Runnable that will execute when the message is handled.
Returns
Message A Message object from the global pool.

obtain

Added in API level 1
Message obtain (Message orig)

obtain()相同,但将现有消息(包括其目标)的值复制到新消息中。

Parameters
orig Message: Original message to copy.
Returns
Message A Message object from the global pool.

obtain

Added in API level 1
Message obtain (Handler h, 
                int what, 
                int arg1, 
                int arg2, 
                Object obj)

obtain() ,但设定 目标内容 ,ARG1,ARG2,OBJ成员的值。

Parameters
h Handler: The target value to set.
what int: The what value to set.
arg1 int: The arg1 value to set.
arg2 int: The arg2 value to set.
obj Object: The obj value to set.
Returns
Message A Message object from the global pool.

obtain

Added in API level 1
Message obtain (Handler h, 
                int what, 
                int arg1, 
                int arg2)

obtain() ,但将 目标的价值观, 什么 ,ARG1,ARG2和成员。

Parameters
h Handler: The target value to set.
what int: The what value to set.
arg1 int: The arg1 value to set.
arg2 int: The arg2 value to set.
Returns
Message A Message object from the global pool.

obtain

Added in API level 1
Message obtain (Handler h, 
                int what, 
                Object obj)

obtain()相同,但设置 目标什么obj成员的值。

Parameters
h Handler: The target value to set.
what int: The what value to set.
obj Object: The object method to set.
Returns
Message A Message object from the global pool.

obtain

Added in API level 1
Message obtain ()

从全局池中返回一个新的Message实例。 允许我们在很多情况下避免分配新对象。

Returns
Message

peekData

Added in API level 1
Bundle peekData ()

像getData()一样,但不会懒惰地创建Bundle。 如果Bundle尚不存在,则返回null。 有关详细信息,请参阅getData()

Returns
Bundle

也可以看看:

recycle

Added in API level 1
void recycle ()

将Message实例返回到全局池。

调用此函数后,您不得触摸消息,因为它已被有效释放。 回收当前已排队或正在交付给处理程序的消息是错误的。

sendToTarget

Added in API level 1
void sendToTarget ()

将此消息发送到由getTarget()指定的处理getTarget() 如果此字段尚未设置,则会抛出空指针异常。

setAsynchronous

Added in API level 22
void setAsynchronous (boolean async)

设置邮件是否是异步的,这意味着它不受 Looper同步障碍的影响。

某些操作(如视图无效)可能会在Looper的消息队列中引入同步障碍,以防止后续消息被传递,直到满足某些条件。 在查看无效的情况下,在调用invalidate()之后发布的消息将通过同步屏障挂起,直到下一帧准备好绘制为止。 同步屏障确保在恢复之前完全处理失效请求。

异步消息免于同步障碍。 它们通常表示中断,输入事件和其他信号,即使其他工作已被暂停,也必须独立处理。

请注意,异步消息可能按照同步消息的顺序乱序发送,尽管它们总是按照顺序发送。 如果这些消息的相对顺序很重要,那么它们可能首先不应该是异步的。 谨慎使用。

Parameters
async boolean: True if the message is asynchronous.

也可以看看:

setData

Added in API level 1
void setData (Bundle data)

设置任意数据值的包。 如果可以的话,使用arg1和arg2成员作为发送一些简单整数值的更低成本的方式。

Parameters
data Bundle

也可以看看:

setTarget

Added in API level 1
void setTarget (Handler target)

Parameters
target Handler

toString

Added in API level 1
String toString ()

返回对象的字符串表示形式。 一般来说, toString方法会返回一个“文本地表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

writeToParcel

Added in API level 1
void writeToParcel (Parcel dest, 
                int flags)

将此对象平铺到一个包裹中。

Parameters
dest Parcel: The Parcel in which the object should be written.
flags int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE.

Hooray!