如何使用Handler

2021-06-01 12:29:51 字數 1230 閱讀 9550

1、          完成定時任務

(1) handle傳送訊息方式

handle有兩類傳送訊息的方式:一類是post***()方法,該方法把乙個runnable物件傳送到訊息佇列,從而當訊息被處理時,能夠執行runnable物件;另一類是send***()方法,該方法用於傳送乙個message型別的訊息到訊息佇列,當訊息被處理時,系統會呼叫handler物件定義的handlemessage()方法處理該訊息。

實現定時任務主要使用sendmessage()類方法,具體為:

sendemptymessage(int),空訊息是指該訊息僅包含what值。

sendemptymessageattime(int what,long uptimemilis),在指定時間點傳送空訊息,uptimemilis是指本次開機開始執行的時間點 ,不包含系統休眠的時間,單位為ms.

sendemptymessagedelayed(int what,long delaymillis),在指定的時間後傳送空訊息,指定的時間以ms為單位。

sendmessage(message),傳送message指定的訊息。

sendmessageattime(message,long);在指定的時間點傳送訊息。

sendmessagedelayed(message,long),在指定的時間後傳送該訊息。

實現定時任務時,一般使用sendmessageatdelayed()或者sendemptymessageatdelayed()方法,即在指定的時間後傳送訊息。當收到該訊息後,系統會自動呼叫handler物件實現的訊息處理介面handlemessage()方法,如下:

final handler handler=new handler(){

public void handlemessage(message message){

switch(msg.what){

case 1:

case 2:

obtainmessage()方法用於從全域性的訊息池中獲得乙個已有的message物件,系統為了加速執行緒間的訊息傳遞,建立了一些全域性的訊息物件供各執行緒使用,這些全域性訊息物件成為全域性訊息池,使用該方法比重新建立乙個訊息物件的效率高。

使用handler物件不但可以給本執行緒傳送訊息,還可以給其他執行緒傳送訊息,前提是需要獲得其他執行緒的handler物件。

前台執行緒建立乙個後台執行緒,並把前台執行緒的handler物件傳遞給後台執行緒,後台執行緒就可以通過該handler物件向前臺執行緒傳送訊息,報告後台資料處理的進度。

如何使用Handler

1 完成定時任務 1 handle傳送訊息方式 handle有兩類傳送訊息的方式 一類是post 方法,該方法把乙個runnable物件傳送到訊息佇列,從而當訊息被處理時,能夠執行runnable物件 另一類是send 方法,該方法用於傳送乙個message型別的訊息到訊息佇列,當訊息被處理時,系統...

Handler的使用(二)

一 handler與執行緒 handler在預設情況下,實際上它和呼叫它的activity處於同乙個執行緒。例如在handler的使用 一 示例1當中,雖然宣告了執行緒物件,但是在實際呼叫當中它並沒有呼叫執行緒的start 方法,而是直接呼叫當前執行緒的run 方法。public class han...

Handler 訊息基本使用

handler 是安卓裡面乙個比較常用的知識點,網上也有很多對handler原始碼分析,如果你要深入研究下面的建議你不要閱讀了,這裡只是個人自學記錄使用場景,不設計原理講解。主要用途 實戰 3秒後跳轉頁面 void handlerouttime 3000 這裡也可以用執行緒thread實現。估計這個...