Android類參考---Message


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對象。如果這個成員變量沒有被設置,那么會拋出一個空指針異常。

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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM