Android菜鳥日記9 Handler佇列

2021-08-31 15:42:28 字數 2030 閱讀 1746

android菜鳥日記9

handler佇列

handler

1. 作用:訊息佇列 執行緒佇列

2. 重點:

handler呼叫runnable實際是並不是開新執行緒 而是放入自己的執行緒中。

如果要開啟執行緒 需要使用handlerthread獲得looper物件並繫結到handler物件上。

3. 使用:

執行緒佇列

1. 先建立乙個handler物件

2. 將要執行的動作寫入執行緒的run中。(handler執行緒佇列放入的是執行緒(runnable|thread))

3. 呼叫handler的post方法把將要執行的執行緒物件加添進執行緒佇列。

ex:如果想執行緒不斷執行的話可以自run方法中加入handler.post/postdelayed呼叫當前的runnable,實現遞迴(也就是執行的方法體中 直接會間接的重新呼叫自己的方法實現不斷的迴圈執行此方法)。

訊息佇列

1. 通過給new handler 覆寫

public void handlemessage(message msg)

來實現接受message資訊

2. 通過handler物件.obtainmessage來獲得mesaage物件

message msg=updatehandler.obtainmessage();

3. 通過handler物件.sendmessage(message msg)來傳送message到訊息佇列

handler物件.sendmessage(msg)

然後將message加入到訊息佇列(先進先出)被handlemessage接收。

ps:建立handler時 複寫handlemessage 方法(匿名內部類|繼承handler的類 複寫handlemessage)

4. 如果要實現遞迴則吧傳送放入執行緒然後每次就收到message都將執行緒再放入執行緒佇列。(可用於實現進度條progressbar變化)

4. handler 與 handlerthread

說明:1.因為handler post入runnable物件其實是沒用建立新的執行緒的。所以android提供了handlerthread來彌補。

2.hanlderthread可以提供looper物件。looper物件是用來迴圈處理訊息佇列的。

3.hanlderthread需要start來開啟。

4.開啟後獲取looper物件(必須start後獲取looper否則會為空) 並把handler繫結到looper 物件上(通過handler有參構造),

looper就會按照handler的handlemessage處理訊息佇列了。

5.這樣handler就在looper的所在的執行緒中執行了。

5.在handler中使用message

通過 handler物件 . obtainmessage()方法獲得message 物件。

傳送message物件時有兩種:

1.handler物件.sendmessage(msg); //傳送給handler物件

2.msg物件. sendtotarget(); //傳送給建立msg的物件

6.message攜帶資料

msg.arg1; 只能攜帶int。

msg.obj; 攜帶obj物件。

msg.setdate(bundle x)攜帶bundle物件。

7.bundle 束

bundle物件類似於hashmap

不同的是hashmap的鍵是任意的。

而bundle的鍵必須是stiring

放入資料

bundle temp=new bundle();

temp.putstring("name", "wenxiu");

temp.putint("age", 19);

讀取資料

bundle temp_h=msg.getdata();

string name=temp_h.getstring("name")

int i=temp_h.getint("age")

2011-8-14

poolo

python菜鳥日記9

1.collections模組中有乙個namedtuple函式,它用來建立乙個自定義的tuple物件,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素,這樣一來,我們用namedtuple可以很方便地定義一種資料型別,它具備tuple的不變性,又可以根據屬性來引用,使...

Android菜鳥日記5

android菜鳥日記5 activity的生命週期 img 1.oncreate 建立 設定activity 布局 監聽之類的 呼叫 2.onstart 當activity能被我們看到時呼叫 呼叫 3.onresume當activity 能夠獲得使用者焦點的時候 點螢幕之類的 呼叫 4.onpau...

Github菜鳥日記 推送

一 如何推送分支給別人 今天想用github裝個逼,想兩個人一起協作完成修改 的工作。但是遇到了問題。問題是這樣的,完整的肯定是在某乙個人的github倉庫中,而本地push的時候又只能往自己的github中推送分支或修改,那麼到底github是如何讓大家協作共同完成 的呢?我的解決方法 a 表示擁...