- android
- android.accessibilityservice
- android.accounts
- android.content
- android.database.sqlite
- android.graphics
- android.location
- android.media
- android.net
- android.os
- android.text
- android.view
- android.view.inputmethod
- android.widget
- AbsListView
- AbsoluteLayout
- AbsSeekBar
- AbsSpinner
- AdapterView
- AnalogClock
- BaseAdapter
- BaseExpandableListAdapter
- Button
- CheckBox
- CheckedTextView
- Checkable
- Chronometer
- CompoundButton
- CursorAdapter
- CursorTreeAdapter
- DatePicker
- DialerFilter
- DigitalClock
- EditText
- Filter
- Filter.FilterListener
- Filter.FilterResults
- ExpandableListAdapter
- Filterable
- Gallery
- Gallery.LayoutParams
- GridView
- GridLayout
- RadioGroup
- ImageView
- HorizontalScrollView
- ImageButton
- ImageSwitcher
- FilterQueryProvider
- ListAdapter
- ListView
- MediaController
- QuickContactBadge
- RadioButton
- RatingBar
- RelativeLayout
- RemoteViews
- ResourceCursorAdapter
- ResourceCursorTreeAdapter
- Scroller
- ScrollView
- SearchView
- SeekBar
- SeekBar.OnSeekBarChangeListener
- SimpleAdapter
- SimpleCursorAdapter
- SimpleCursorTreeAdapter
- SimpleExpandableListAdapter
- SlidingDrawer
- Spinner
- SpinnerAdapter
- WrapperListAdapter
- TabHost
- TabHost.TabSpec
- TextView
- TimePicker
- Toast
- TableLayout
- TableRow
- TableRow.LayoutParams
- TabWidget
- TextSwitcher
- ToggleButton
- TwoLineListItem
- VideoView
- ViewAnimator
- ViewFlipper
- ViewSwitcher
- ZoomButtonsController
- ZoomButton
- ZoomControls
- dalvik.system
Message
Message
译者微博: http://t.qq.com/strongxu
版本:Android 3.1 r1
结构
继承关系
public final class Message extends Object implements Parcelable
java.lang.Object
android.os.Message
类概述
定义一个包含任意类型的描述数据对象,此对象可以发送给 Handler。对象包含两个额外的 int 字段和一个额外的对象字段,这样可以使得在很多情况下不用做分配工作。
尽管 Message 的构造器是公开的,但是获取 Message 对象的最好方法是调用 Message.obtain() 或者 Handler.obtainMessage(), 这样是从一个可回收对象池中获取 Message 对象。
字段
public static final Creator<Message> CREATOR
public int arg1
如果只需要存储几个整型数据,arg1 和 arg2 是 setData() 的低成本替代品。
public int arg2
如果只需要存储几个整型数据,arg1 和 arg2 是 setData() 的低成本替代品。
public Object obj
发送给接收器的任意对象。当使用 Message 对象在线程间传递消息时,如果它包含一个 Parcelable 的结构类(不是由应用程序实现的类),此字段必须为非空(non-null)。其他的数据传输则使用 setData(Bundle) 方法。
注意 Parcelable 对象是从 FROYO 版本以后才开始支持的。
public Messenger replyTo
指明此 message 发送到何处的可选 Messenger 对象。具体的使用方法由发送者和接受者决定。
public int what
用户自定义的消息代码,这样接受者可以了解这个消息的信息。每个 handler 各自包含自己的消息代码,所以不用担心自定义的消息跟其他 handlers 有冲突。
公共构造器
public Message()
构造器(但是获取 Message 对象的最好方法是调用 Message.obtain())。
公共方法
public void copyFrom (Message o)
使此 message 跟参数 o 相似。浅拷贝数据域。不拷贝源 message 的链表字段,时间戳和目标/回调。
public int describeContents ()
描述了包含在 Parcelable 对象排列信息中的特殊对象的类型。
返回值
一个标志位,表明 Parcelable 对象特殊对象类型集合的排列。
public Runnable getCallback ()
获取回调对象,此对象会在 message 处理时执行。此对象必须实现 Runnable 接口。回调由接收此消息并分发的目标 handler 调用。如果没有设置回调,此消息会分发到接收 handler 的 handleMessage(Message)。
public Bundle getData ()
获取附加在此事件上的任意数据的 Bundle 对象,需要时延迟创建。通过调用 setData(Bundle) 来设置 Bundle 的值。需要注意的是,如果通过 Messenger 对象在进程间传递数据时,需要调用 Bundle 类的 Bundle.setClassLoader() 方法来设置 ClassLoader,这样当接收到消息时可以实例化 Bundle 里的对象。
参考
peekData()
setData(Bundle)
public Handler getTarget ()
获取将接收此消息的 Handler 对象。此对象必须要实现 Handler.handleMessage() 方法。每个 handler 各自包含自己的消息代码,所以不用担心自定义的消息跟其他 handlers 有冲突。
public long getWhen ()
返回此消息的传输时间,以毫秒为单位。
public static Message obtain (Handler h, int what, int arg1, int arg2, Object obj)
与 obtain() 一样,但是设置了 target, what, arg1, arg2 和 obj 的值。
参数
h 设置的 target 值
what 设置的 what 值
arg1 设置的 arg1 值
arg2 设置的 arg2 值
obj 设置的 obj 值
返回值
从全局池中分配的一个 Message 对象。
public static Message obtain (Handler h, int what, Object obj)
与 obtain() 一样,但是设置了 target, what 和 obj 的值。
参数
h 设置的 target 值
what 设置的 what 值
obj 设置的 obj 值
返回值
从全局池中分配的一个 Message 对象。
public static Message obtain (Handler h, int what)
与 obtain() 一样,但是设置了 target 和 what 的值。
参数
h target 的值
what what 的值
返回值
从全局池中分配的一个 Message 对象。
public static Message obtain (Handler h)
与 obtain() 一样,但是设置了 target 的值
参数
h 消息对象的 target 成员的值
返回值
从全局池中分配的一个 Message 对象。
public static Message obtain (Handler h, Runnable callback)
与 obtain(Handler) 一样,但是设置回调函数,在 Message 返回时调用。
参数
h 消息对象的 target 成员的值
callback 当消息处理时会调用的回调函数
返回值
从全局池中分配的一个 Message 对象。
public static Message obtain ()
从全局池中返回一个新的 Message 实例。在大多数情况下这样可以避免分配新的对象。
public static Message obtain (Handler h, int what, int arg1, int arg2)
与 obtain() 一样,但是设置了 target, what, arg1 和 arg2 的值
参数
h 设置的 targe 值
what 设置的 what 值
arg1 设置的 arg1 值
arg2 设置的 arg2 值
返回值
从全局池中分配的一个 Message 对象。
public static Message obtain (Message obj)
同 obtain(),但是从一个已存在的消息中拷贝值(包括它的目标)。
参数
orig 要拷贝的源消息
返回值
从全局池中分配的一个 Message 对象。
public Bundle peekData ()
与 getData() 相似,但是并不延迟创建 Bundle。如果 Bundle 对象不存在返回 null。更多信息见 getData()。
参考
getData()
setData(Bundle)
public void recyle ()
向全局池中返回一个 Message 实例。一定不能在调用此函数后再使用 Message——它会立即被释放。
public void sendToTarget ()
向 Handler 发送此消息,getTarget() 方法可以获取此 Handler。如果这个字段没有设置会抛出个空指针异常。
public void setData (Bundle data)
设置一个任意数据值的 Bundle 对象。如果可以,使用 arg1 和 arg2 域发送一些整型值以减少消耗。
参考
getData()
peekData()
public void setTarget (Handler target)
设置将接收此消息的 Handler 对象。
public String toString ()
返回一个 Message 对象简单的,可读懂的描述信息。鼓励子类重写此方法,实现时最好把对象的类型的数据考虑进去。默认的实现等同与以下表达式:
如果需要实现 toString 方法,参考 Writing a useful toString method 。
返回值
一个代表此对象的可打印字符串
public void writeToParcel (Parcel dest, int flags)
将类的数据写入外部提供的 Parcel 中
参数
dest 对象被写入的 Parcel
flags 对象如何被写入的附加标志,可能是 0 或 PARCELABLE_WRITE_RETURN_VALUE 。
补充
文章精选
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论