日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android开发】消息处理类(Handler)与消息类(Message)介绍

發布時間:2024/4/13 Android 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android开发】消息处理类(Handler)与消息类(Message)介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.消息處理類(Handler)簡介
消息處理類Handler允許發送和處理Message或Runnable對象到其所在線程的MessageQueue中。Handler主要有一下兩個作用:

1.將Message或Runnable應用post()或sandMessage()方法發送到MessageQueue中,在發送時可以指定延遲時間、發送時間以及要攜帶的Bundle數據。當MessageQueue循環到該Message時,調用相應的Handler對象的handlerMessage()方法對其進行處理。

2.在子線程中與主線程進行通信,也就是在工作線程中與UI線程進行通信。

*在一個線程中,只能有一個Looper和MessageQueue,但是可以有多個Handler,而且這些Handler可以共享一個Looper和MessageQueue。

Handler類提供的發送和處理消息的常用方法如下表:
void handleMessage(Message msg):處理消息的方法,該方法通常用于被重寫。 final boolean hasMessage(int what):檢查消息隊列是否包含what屬性指定值的消息。 final boolean hasMessage(int what,Object object):檢查消息隊列中是否包含what屬性為指定且object屬性為指定指定對象的消息。 Message obtainMessage():獲取消息。 sendEmptyMessage(int what):發送空消息。 final boolean sendEmptyMessageDelayed(int what,long delayMillis):指定多少毫秒之后發送空消息。 final boolean sendMessage(Message msg):立即發送消息。 final boolean sendMessageAtTime(Message msg,long uptimeMillis):定時發送消息。 final boolean sendMessageDelayed(Message msg,long delayMillis):指定多少毫秒之后發送消息。
二.消息類(Message)簡介
消息類(Message)被存放在MessageQueue中,一個MessageQueue中可以包含多個Message對象,每個Message對象可以通過Message.obtain()或Handler.obtainMessage()方法獲得。一個Message對象有如下5個屬性:
arg1 int類型 用來存放整型數據 arg2 int類型 用來存放整型數據 what int類型 用來保存消息標示 obj Object類型 是Object類型的任意對象 replyTo Messager類型 用來指定此Message發送到何處的可選Message對象
*使用Message類的屬性可以攜帶int類型數據,如果要攜帶其他類型的數據,可以先將要攜帶的數據保存到Bundle中對象中,然后通過Message類的setData()方法將其添加到Message中。
如:
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putInt("int", 1);
bundle.putBoolean("boolean", false);
bundle.putByte("byte", (Byte) null);
bundle.putChar("char",'a');
bundle.putCharSequence("Stirng","Hello World");
bundle.putFloat("float", 12.3f);
bundle.putString("String", "Hello World");
bundle.putDouble("double", 12.3);
msg.setData(bundle);

總之,Message類的使用方法比較簡單,在使用時,需注意以下3點:
a.盡管Message有public的默認構造方法,但是通常情況下,需要使用Message.obtaion()或Handler.obtainMessage()方法來從消息池中獲得空消息對象,以節省資源。

b.如果一個Message只需要攜帶簡單的int型信息,應優先使用Message.arg1和Message.arg2屬性來傳遞信息,這比用Bundle更節省內存。

c.盡可能使用Message.what來標識信息,以便用不同方式處理Massage。

轉載請注明出處:http://blog.csdn.net/acmman/article/details/46358991

總結

以上是生活随笔為你收集整理的【Android开发】消息处理类(Handler)与消息类(Message)介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。