Android中線程間的通訊

2021-07-07 10:05:36 字數 1288 閱讀 7888

handler類

(一)概述

例如:handler在工作執行緒中傳送訊息,該訊息傳送至訊息佇列中,等待處理。在主線程中handler從訊息佇列中接

收訊息,並根據訊息中的資訊決定如何更新ui。

每個handler例項都會繫結到建立它的執行緒中。

handler可以傳送訊息或runnable值某個執行緒的訊息佇列中。

(二)構造方法

1.public handler handler();

無參構造方法

2.handler(looper looper)

作用:帶參構造方法,用於建立handler物件。將自定義的用於管理訊息佇列的looper物件放在handler.mlooper成

員變數中。

引數looper:自定義的管理訊息佇列的物件。

3.handler(callback callback)

作用:帶參構造方法,建立handler物件

引數:callback:自定義的用於處理訊息的物件,該物件必須實現handler.callback介面。

說明:1)callback介面中宣告了handlemessage()方法,程式設計師在該方法中編寫處理訊息的**。

2)callback儲存在handler.mcallback成員變數中。在handler處理訊息時將呼叫mcallback中封裝的**。

4.handler(looper looper,callback callback)

作用:帶參構造方法,建立handler物件

引數:參見2和3中關於looper和callback的說明

(三)常用方法

1.sendemptymessage(int what)

作用:從work thread(工作執行緒)向主線程傳送空訊息

引數:當多個執行緒向主線程傳送訊息,what用於區別不同的執行緒

2.sendmessage(message msg)

作用:從workthread向主線程傳送訊息

引數msg:存放訊息的資料物件

3.handlemessage(message msg)

作用:接收並處理從work thread傳送的訊息

引數msg:sendmessage傳送過來的訊息物件

4.public final boolean android.os.handler.post(runnable r)

作用:將乙個實現了runnable的任務物件傳送中目標執行緒的訊息佇列中。

程序中線程間通訊

一般而言,應用程式中的乙個次要執行緒總是為主執行緒執行特定的任務,這樣,主線程和次要執行緒間必定有乙個資訊傳遞的渠道,也就是主線程和次要執行緒間要進行通訊。這種執行緒間的通訊不但是難以避免的,而且在多執行緒程式設計中也是複雜和頻繁的,下面將進行說明。由於屬於同乙個程序的各個執行緒共享作業系統分配該程...

MFC中線程間通訊 主線程與子執行緒間的通訊

第0步 宣告乙個執行緒 乙個事件 cwinthread m hthread 接收執行緒的控制代碼 handle hstarteven 第一步 定義自己的訊息 define my message wm user 100第二步 在傳送訊息的執行緒中 得到需要傳輸的資料 cstring str getdl...

android執行緒間通訊

原文 1,通過handler機制.private void one new thread catch interruptedexception e message message new message message.what 123 message.obj 通過handler機制 handler...