Android Message和obtainMessage的區別

2022-04-13 03:48:16 字數 1339 閱讀 2186

1樓:獅子

我想你說的區別應該是指:message在使用時是new message(),obtainmessage在使用時是handler.obtainmessage()吧。

一個比較好理解的區別是obtainmessage不需要重新new出物件,而是直接取自訊息池,節省了記憶體開銷;另外一個重要的用法是,涉及到自定義thread時,建議使用obtainmessage,因為使用message可能會導致null異常或其他異常。

2樓:逆長小白菜

前幾天需要實現一個乙太網功能就看了乙太網的原始碼部分,看見了原始碼部分在訊息處理時,發現有一些不同的地方:

平時我在處理訊息時:

1、首先建立handler物件:

private handler handler = new handler()

};};

2、然後是訊息處理:

private void testhandlermessage()

但是我看別人原始碼部分是是這樣處理的:

1、首先建立handler物件:

private handler handler = new handler()

};};

2、然後是訊息處理:

private void obtainmessagetest()

通過比較我們會發現,這兩種獲取message的例項的方法不一樣,於是我看了原始碼,果然不一樣:

檢視obtainmessage()原始碼:

圖1:進入obtain方法:

圖2:再進入objtain方法:

圖3:進入message方法:

圖4:總結:

上面的圖3中obtain方法的註釋中說得很明白:從整個messge池中返回一個新的message例項,在許多情況下使用它,因為它能避免分配新的物件

如果是這人的話,那麼通過呼叫obtainmessage方法獲取message物件就能避免建立物件,從而減少記憶體的開銷了。

求安卓大神,android中handler中的obtainmessage()

3樓:匿名使用者

就是把四個引數全部傳遞給ss啊

4樓:

就是你的message傳給handler的值,message msg = handler.obtainmessage();

msg.arg1 = 1;

msg.arg2 = 2;

msg.what = 3;

msg.obj = object;

在handler中接收

handler handler = new handler()};

亭和庭和潭和螺和諳怎麼組詞和拼音

亭的拼音 t ng 庭的拼音 t ng 潭的拼音 t n 螺的拼音 lu 諳的拼音 n 組詞 亭 亭亭 亭午 亭子 崗亭 長亭 郵亭 書亭 亭勻 同亭 蘭亭 山亭 龍亭 街亭 梅亭 亭長 溪亭 雲亭 羅亭 茶亭 風亭 亭侯 石亭 皋亭 亭軒 新亭 紅亭 庭 家庭 庭院 法庭 門庭 庭審 庭園 徑庭 ...

蒙的偏旁和拼音和筆畫和組詞和結構?

蒙,偏旁部首為草字頭 艹 總共13畫,除去部首10畫,上中下結構。蒙 meng一聲 矇騙 矇在鼓裡 瞎蒙等詞。句子 這件事過去很久了,但他父親還被矇在鼓裡,不知緣由。考試時間馬上到了,小明瞎蒙了幾道選擇題,碰運氣。蒙 meng二聲 啟蒙 承蒙 細雨濛濛。句子 隨著時代發展,傳統文化已走進了啟蒙教育的...

衝的音序和音節和部首,和結構和組詞是什麼

衝是多音字,音節是ch ng組詞為衝擊,ch ng組詞為衝子,音序為c,是左右結構,部首為冫。能的音序音節部首結構組詞,是什麼?能的音序是 n 能的音節是 neng 能的部首是 厶 能的結構是 左右結構 能的組詞可以組 可能 不能 才能。您好,慕字的音序,音節,部首,結構,組詞如下 慕 音序 m 音...