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 表示擁...