Message原始碼分析

2022-08-03 02:51:12 字數 915 閱讀 2166

message在android中主要是在 訊息迴圈機制 中使用,即配合handler,loopermessagequeue來進行執行緒切換,執行緒間傳遞資料。message儲存了我們所有需要的東西。

還可以配合handler在ipc中傳遞資料。

我們在使用的過程中應該使用obtain()這個方法來重複利用訊息池裡面的message

而復用池本質上就是乙個單向鍊錶,為了更好的理解,message復用池的實現,我們先來看下,簡單的單向鍊錶實現.

public

final

class message implements

parcelable

}//鍊錶中,沒有可復用的message,直接new

return

newmessage();

}//模擬單向鍊錶的inserthead操作

void

recycleunchecked() }}

...}

從上面的分析,我們來梳理一下整體的流程思想.

靜態變數屬於類變數,記憶體中只會存在乙份引用,正好能起到 頭結點的作用

從復用池中獲取message避免了 new建立的消耗.

新增到復用池之前,會先將message中的資料清空.

50個可能是考慮到記憶體開銷和時間開銷的平衡, 不是將資料無限制的新增到復用池.

message將自身作為節點, 使用乙個靜態變數作為頭結點,讓message自身形成乙個鍊錶,而鍊錶中存的是 已經清空資料的message物件, 以這種方式起到復用的效果!

handler原始碼學習(2) Message

這是handler原始碼學習第二篇,後續還有 handler原始碼學習 1 handler handler原始碼學習 2 message handler原始碼學習 3 looper handler原始碼學習 4 messagequeue message相對來說比較簡單,大部門 都是對一些屬性值的賦值...

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

思科VPP原始碼分析(dpo機制原始碼分析)

vpp的dpo機制跟路由緊密結合在一起。路由表查詢 ip4 lookup 的最後結果是乙個load balance t結構。該結構可以看做是乙個hash表,裡面包含了很多dpo,指向為下一步處理動作。每個dpo都是新增路由時的乙個path的結果。dpo標準型別有 dpo drop,dpo ip nu...