首頁>Club>
面試率90%以上。
3
回覆列表
  • 1 # 北漂Plus

    Android的訊息機制主要是指Handler的執行機制,Handler的執行需要MessageQueue,Looper的支援;Handler的主要作用就是講一個任務切換到某個指定的執行緒中去執行,主要去執行一些UI操作;

    1、ThreadLocal的工作原理;

    Threadlocal主要作用是可以根據不同的執行緒互不干擾的儲存資料和提供資料,其內部封裝了ThreadlocalMap類用於資料儲存和提供,分別使用get和set方法,存取資料時都會去呼叫Thread.currentThread();方法獲取當前執行緒,在不同的執行緒中訪問同一個Threadlocal的get()和set()方法,它們對Threadlocal所做的讀寫操作僅限於各自執行緒的內部。

    2、訊息佇列的工作原理;

    MessageQueue:訊息佇列,用於存放Handler發出的訊息,其存放的方式使用單鏈表資料結構,單鏈表在插入和刪除上比較有優勢,插入和讀取分別對應了enqueueMessage()和next方法,前者是往訊息佇列裡插入一條資料,後者則是取出訊息後並且在訊息佇列中移除,next是一個無限迴圈的方法,沒有訊息時阻塞等待,當有新訊息時,next會返回這條訊息並將其從佇列中移除。

    3、Looper的工作原理;

    Looper:輪詢器,實際上Looper就是一個無限迴圈的訊息輪詢器,跟MessagQueue結合,不斷的從MessageQueue中檢視是否有新訊息,去呼叫MessageQueue的next方法,因為next就是一個無限迴圈的方法,因此Looper的loop方法也是跟next一樣,無訊息時等待,有訊息時獲取,當獲取到訊息時會交給Handler去處理,Handler的dispatchMessage方法被呼叫;

    4、Handler的工作原理;

    Handler的工作主要包括髮送訊息和接收訊息,訊息的傳送可以透過post或者send等一系列的方法,其中post一系列的方法也是透過send發出的。Handler傳送訊息其實就是把訊息插入到MessageQueue中,MessageQueue透過next方法把訊息傳遞給Looper,Looper收到訊息處理後交由Handler處理,Handler接收到訊息,dispatchMessage被呼叫,處理過程:先檢查Message的callback是否為null,不為null就透過handlerCallback來處理訊息,其次檢查mCallback是否為null,不為null則呼叫handlerMessage方法完成回撥。

  • 中秋節和大豐收的關聯?
  • 能不能由騰訊組織各大遊戲平臺和平精英主播來一場平臺與平臺間的比賽呢?