Android類參考—Message

來源:互聯網
上載者:User

1.繼承關係

Java.lang.Object

   |_____android.os.Message

實現Parcelable介面。

2.類概要

這個類定義了一個能夠發送給Handler對象的訊息,它包含了訊息的描述和任意資料對象。這個對象包含兩個int類型欄位和一個object類型欄位,這三個欄位在很多情況下不需要給其分配資料。

雖然Message類的構造器是公開的,但是擷取它的執行個體的最好的方法是:調用Message.obtain()方法或Handler.obtainMessage()方法,它們會從回收對象池中擷取一個廢棄的Message對象。

3.Public欄位

public static final Creator<Message> CREATOR

public int arg1:如果僅需要保持幾個整數,那麼使用arg1和arg2來替代setData()方法會降低系統開銷。

public int arg2:如果僅需要保持幾個整數,那麼使用arg1和arg2來替代setData()方法會降低系統開銷。

public Object obj :要發送給接受器的任意類型的對象。使用Messageer對象跨進程來發送訊息時,如果它包含了一個架構類的Parcelable實現(而不是由應用程式實現的),那麼這個對象只能是非空的。對於其他資料的傳輸要使用setData(Bundle)。

public Messenger replyto:設定能夠接收此訊息的回複的Messager對象。確切的語義應該使用寄件者和接受者。

public int what:使用者定義的訊息編碼,便於接受器能夠表示這個訊息。每個Handler對象都有它自己的訊息編碼命名空間,因此不需要擔心與其他的Handler發生衝突。

4.Public構造器

public Message()

構造器,但擷取Message對象最好方法是調用Message.obtain()方法。

5.Public方法

public void copyFrom(Message o)

對Message對象o的資料欄位執行影像拷貝。它不能複製被連結的列表欄位,也不能複製原始訊息的時間戳記、目標以及回調方法。

public int describeContents()

這個方法描述了Parcelable編組所包的特殊的對象的類型。

傳回值:一個位元遮罩,它指示了由Parcelable對象編組的特殊物件類型的集合。

public Runnable getCallback()

擷取訊息被處理時要執行的回調對象。這個對象必須實現Runnable介面。由目標Handler對象調用的這個對象會接受分發給它的Message對象。如果沒有設定,訊息會被分發給接受Handler對象的handleMessage(Message)方法。

public Bundle getData()

擷取跟本事件關聯的任意資料的Bundle對象。如果需要會延遲建立它。通過調用setData(Bundle)方法來設定要傳遞的值。要注意的是,當通過Messager對象跨進程傳遞資料時,需要通過Bundle.setClassLoader()方法來設定與Bundle相關的ClassLoader,以便在擷取資料時能夠執行個體化為具體的對象。

public Handler getTarget()

擷取接受訊息的Handler對象的實現。這個對象必須實現Handler.handleMessage()方法,每個Handler對象都有它自己的訊息編碼命名空間,因此不需要擔心與其他的Handler對象發生衝突。

public long getWhen()

以毫秒為單位,返回訊息被發送給目標的時間。

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

與obtain()方法相同,但是要設定target、what、arg1、arg2、和obj成員變數的值。

參數說明:

h:處理訊息的目標Handler對象;

what:訊息的編碼;

arg1:附加的整數資料;

arg2:附加的整數資料;

obj:附件的Object類型資料。

傳回值:從全域的對象池中返回一個Message對象。

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

與obtain()方法相同,但要設定target、what、和obj成員變數的值。

參數說明:

h:處理訊息的目標Handler對象;

what:訊息的編碼;

obj:附件的Object類型資料。

傳回值:從全域的對象池中返回一個Message對象。

public static Message obtain(Handler h, int what)

與obtain方法相同,但要設定與Message對象相關的target和what成員變數。

參數說明:

h:處理訊息的目標Handler對象;

what:訊息的編碼;

傳回值:從全域的對象池中返回一個Message對象。

public static Message obtain(Handler h)

與obtain方法相同,但要設定與Message對象相關的target和what成員變數。

參數說明:

h:處理訊息的目標Handler對象;

傳回值:從全域的對象池中返回一個Message對象。

public static Message obtain(Handler h, Runnable callback)

與obtain方法相同,但要給返回的Message對象分配一個Runnable對象。

參數說明:

h:處理訊息的目標Handler對象;

callback:處理訊息時要執行的Runnable對象。

傳回值:從全域的對象池中返回一個Message對象。

public static Message obtain()

從全域的對象池中返回一個新的Message執行個體,在很多情況下,這樣可以避免建立新對象的系統開銷。

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

與obtain()方法相同,但要設定target、what、arg1、arg2成員變數的值。

參數說明:

h:處理訊息的目標Handler對象;

what:訊息的編碼;

arg1:附加的整數資料;

arg2:附加的整數資料;

傳回值:從全域的對象池中返回一個Message對象。

public static Message obtain(Message orig)

與obtain()方法相同,但它是把一個既存的Message對象(包括它的目標)複製到一個新的Message對象中。

參數說明:

orig:要複製的原始訊息。

傳回值:從全域的對象池中返回一個Message對象。

public Bundle peekData()

有點像getData(),但是它不會延遲建立Bundle對象,如果Bundle對象不存在,則返回null。

public void recycle()

把一個Message對象的執行個體返回給全域的對象池。調用這個方法後,就不必在關注這個Message對象了,它會被有效釋放。

public void sendToTarget()

把Message對象發送給有getTarget()方法所指定的Handler對象。如果這個成員變數沒有被設定,那麼會拋出一個null 指標異常。

public void setData(Bundle data)

給Message對象設定一個任意資料類型的Bundler對象。如果可以,使用arg1和arg2成員變數來發送簡單的整數值,可以有效降低系統開銷。

public void setTarget(Handler target)

設定處理本訊息的Handler對象。

public Sting toString()

返回一個簡明的,外行人能夠讀懂的對象描述。子類的實現中被鼓勵要覆寫這個方法,並且提供實現所要考慮的對象的類型和資料。預設實現如下:

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

傳回值:返回一個可列印的對象的描述。

public void writeToParcel(Parcel dest, int flags)

把這個訊息對象合并到一個Parcel對象中。

參數說明:

dest:指定訊息對象應該被寫入的Parcel類型對象。

flags:指定訊息對象應該如何寫入Parcel對象的附加標記。可以是0或PARCELABLE_WRITE_RETURN_VALUE。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.