public final class Message extends Object implements Parcelable
Handler
. This object contains two extra int fields and an
extra object field that allow you to not do allocations in many cases.
While the constructor of Message is public, the best way to get
one of these is to call Message.obtain()
or one of the
Handler.obtainMessage()
methods, which will pull
them from a pool of recycled objects.
Parcelable.ClassLoaderCreator<T>, Parcelable.Creator<T>
Modifier and Type | Field and Description |
---|---|
int |
arg1
arg1 and arg2 are lower-cost alternatives to using
setData() if you only need to store a
few integer values. |
int |
arg2
arg1 and arg2 are lower-cost alternatives to using
setData() if you only need to store a
few integer values. |
static Parcelable.Creator<Message> |
CREATOR |
Object |
obj
An arbitrary object to send to the recipient.
|
Messenger |
replyTo
Optional Messenger where replies to this message can be sent.
|
int |
what
User-defined message code so that the recipient can identify
what this message is about.
|
CONTENTS_FILE_DESCRIPTOR, PARCELABLE_WRITE_RETURN_VALUE
Constructor and Description |
---|
Message()
Constructor (but the preferred way to get a Message is to call
Message.obtain() ). |
Modifier and Type | Method and Description |
---|---|
void |
copyFrom(Message o)
Make this message like o.
|
int |
describeContents()
Describe the kinds of special objects contained in this Parcelable's
marshalled representation.
|
Runnable |
getCallback()
Retrieve callback object that will execute when this message is handled.
|
Bundle |
getData()
Obtains a Bundle of arbitrary data associated with this
event, lazily creating it if necessary.
|
Handler |
getTarget()
Retrieve the a
Handler implementation that
will receive this message. |
long |
getWhen()
Return the targeted delivery time of this message, in milliseconds.
|
boolean |
isAsynchronous()
Returns true if the message is asynchronous.
|
static Message |
obtain()
Return a new Message instance from the global pool.
|
static Message |
obtain(Handler h)
Same as
obtain() , but sets the value for the target member on the Message returned. |
static Message |
obtain(Handler h,
int what)
Same as
obtain() , but sets the values for both target and
what members on the Message. |
static Message |
obtain(Handler h,
int what,
int arg1,
int arg2)
Same as
obtain() , but sets the values of the target, what,
arg1, and arg2 members. |
static Message |
obtain(Handler h,
int what,
int arg1,
int arg2,
Object obj)
Same as
obtain() , but sets the values of the target, what,
arg1, arg2, and obj members. |
static Message |
obtain(Handler h,
int what,
Object obj)
Same as
obtain() , but sets the values of the target, what, and obj
members. |
static Message |
obtain(Handler h,
Runnable callback)
Same as
obtain(Handler) , but assigns a callback Runnable on
the Message that is returned. |
static Message |
obtain(Message orig)
Same as
obtain() , but copies the values of an existing
message (including its target) into the new one. |
Bundle |
peekData()
Like getData(), but does not lazily create the Bundle.
|
void |
recycle()
Return a Message instance to the global pool.
|
void |
sendToTarget()
Sends this Message to the Handler specified by
getTarget() . |
void |
setAsynchronous(boolean async)
Sets whether the message is asynchronous.
|
void |
setData(Bundle data)
Sets a Bundle of arbitrary data values.
|
void |
setTarget(Handler target) |
String |
toString()
Returns a string containing a concise, human-readable description of this
object.
|
void |
writeToParcel(Parcel dest,
int flags)
Flatten this object in to a Parcel.
|
public int what
Handler
has its own name-space
for message codes, so you do not need to worry about yours conflicting
with other handlers.public int arg1
setData()
if you only need to store a
few integer values.public int arg2
setData()
if you only need to store a
few integer values.public Object obj
Messenger
to send the message across processes this can only
be non-null if it contains a Parcelable of a framework class (not one
implemented by the application). For other data transfer use
setData(android.os.Bundle)
.
Note that Parcelable objects here are not supported prior to
the Build.VERSION_CODES.FROYO
release.
public Messenger replyTo
public static final Parcelable.Creator<Message> CREATOR
public Message()
Message.obtain()
).public static Message obtain()
public static Message obtain(Message orig)
obtain()
, but copies the values of an existing
message (including its target) into the new one.orig
- Original message to copy.public static Message obtain(Handler h)
obtain()
, but sets the value for the target member on the Message returned.h
- Handler to assign to the returned Message object's target member.public static Message obtain(Handler h, Runnable callback)
obtain(Handler)
, but assigns a callback Runnable on
the Message that is returned.h
- Handler to assign to the returned Message object's target member.callback
- Runnable that will execute when the message is handled.public static Message obtain(Handler h, int what)
obtain()
, but sets the values for both target and
what members on the Message.h
- Value to assign to the target member.what
- Value to assign to the what member.public static Message obtain(Handler h, int what, Object obj)
obtain()
, but sets the values of the target, what, and obj
members.h
- The target value to set.what
- The what value to set.obj
- The object method to set.public static Message obtain(Handler h, int what, int arg1, int arg2)
obtain()
, but sets the values of the target, what,
arg1, and arg2 members.h
- The target value to set.what
- The what value to set.arg1
- The arg1 value to set.arg2
- The arg2 value to set.public static Message obtain(Handler h, int what, int arg1, int arg2, Object obj)
obtain()
, but sets the values of the target, what,
arg1, arg2, and obj members.h
- The target value to set.what
- The what value to set.arg1
- The arg1 value to set.arg2
- The arg2 value to set.obj
- The obj value to set.public void recycle()
public void copyFrom(Message o)
public long getWhen()
public void setTarget(Handler target)
public Handler getTarget()
Handler
implementation that
will receive this message. The object must implement
Handler.handleMessage()
. Each Handler has its own name-space for
message codes, so you do not need to
worry about yours conflicting with other handlers.public Runnable getCallback()
Handler
that is receiving this Message to
dispatch it. If
not set, the message will be dispatched to the receiving Handler's
Handler.handleMessage(Message Handler.handleMessage())
.public Bundle getData()
setData(Bundle)
. Note that when transferring data across
processes via Messenger
, you will need to set your ClassLoader
on the Bundle via Bundle.setClassLoader()
so that it can instantiate your objects when
you retrieve them.peekData()
,
setData(Bundle)
public Bundle peekData()
getData()
for further information on this.getData()
,
setData(Bundle)
public void setData(Bundle data)
getData()
,
peekData()
public void sendToTarget()
getTarget()
.
Throws a null pointer exception if this field has not been set.public boolean isAsynchronous()
MessageQueue.enqueueSyncBarrier(long)
.setAsynchronous(boolean)
,
MessageQueue.enqueueSyncBarrier(long)
,
MessageQueue.removeSyncBarrier(int)
public void setAsynchronous(boolean async)
MessageQueue.enqueueSyncBarrier(long)
.async
- True if the message is asynchronous.isAsynchronous()
,
MessageQueue.enqueueSyncBarrier(long)
,
MessageQueue.removeSyncBarrier(int)
public String toString()
Object
getClass().getName() + '@' + Integer.toHexString(hashCode())
See Writing a useful
toString
method
if you intend implementing your own toString
method.
public int describeContents()
Parcelable
describeContents
in interface Parcelable
public void writeToParcel(Parcel dest, int flags)
Parcelable
writeToParcel
in interface Parcelable
dest
- The Parcel in which the object should be written.flags
- Additional flags about how the object should be written.
May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE
.