深入淺出Android訊息系統之一
1.VC6.0 MFC訊息機制
通過PreTranslateMessage處理訊息;
2.Activity內嵌的訊息處理機制有:
a.onKeyDown;
b.各式各樣的lister,如onKeyDownListener;
3.有哪些工作必須通過訊息分發處理機制來完成呢:
a.事件的定時觸發;
b.非同步迴圈事件的處理;
c.高耗時的工作;
4.Handler處理哪個線程下的訊息:
預設情況下,Handler接受的是當前線程下的訊息迴圈執行個體
5.一個訊息迴圈可以被多個對象分發與處理
一個訊息迴圈可以被當前線程中的多個對象來分發,來處理(在UI線程中,系統已經有一個Activity來處理了,你可以再起若干個Handler來處理...)。
6. Android的CPU分配的最小單元:
線程
7.Handler與Thread的關係:
Handler一般是在某個線程裡建立的,因而Handler和Thread就是相互綁定的,一一對應的;
8.Runnable與Thread之間的關係:
Runnable是一個介面,Thread是Runnable的子類。所以說,他倆都算一個線程;
9.Thread(HandlerThread)的作用是什嗎?
HandlerThread顧名思義就是可以處理訊息迴圈的線程,他是一個擁有Looper的線程,可以處理訊息迴圈。
10.Handler是在UI線程之內啟動並執行,並沒有建立線程:
在UI線程(主線程)中,有如下代碼:
mHandler=new Handler();
mHandler.post(new Runnable(){
void run(){
//執行代碼...
}
});
這個線程其實是在UI線程之內啟動並執行,並沒有建立線程。
11.常見的建立線程的方法是:
方法一:
Thread thread = new Thread();
thread.start();
方法二:
HandlerThread thread = new HandlerThread("string");
thread.start();
12.主線程就是UI線程;13.UI線程何時建立:
當應用程式啟動時,Android首先會開啟一個主線程 (也就是UI線程)
14.主線程的作用:
主線程為管理介面中的UI控制項,進行事件分發, 比如說, 你要是點擊一個Button,Android會分發事件到Button上,來響應你的操作。
15.如果把耗時的工作,放在主線程中處理,有什麼後果?
如果放在主線程中的話,介面會出現假死現象, 如果5秒鐘還沒有完成的話,會收到Android系統的一個錯誤提示 "強制關閉".
16.有哪些是耗時的工作:
a.連網讀取資料;
b.讀取本地的一個大檔案;
c.硬體初始化;
17.如果遇到耗時的工作,如何處理?
需要把這些耗時的操作放在一個子線程中
18.更新UI只能在主線程中更新;
Notes:主線程就是UI線程;
19. Handler的作用:
Handler的作用:
1.接受子線程傳過來的Message對象(裡麵包含資料);
Notes:子線程用sedMessage()方法傳遞;
2.把這些訊息放入主線程隊列中,
3.配合主線程進行更新UI。;
20.Handler與Thread如何傳遞資料:
Handler與子線程可以通過Message對象來傳遞資料。