結構
Leak Canary 內部分為三個包,分別是Android Analyze Watcher
android包內部為主控邏輯部分以及平臺api相關邏輯。
watcher包的功能為監控某個對象的內存引用釋放情況。
analyzer包負責處理watcher后dump出的內存文件。
haha是另外一個開源工程,內存文件的處理都依賴這個庫。
關鍵邏輯及流轉
通過ActivityLifecycleCallbacks監聽activity銷毀,然后在activity上包裝WeakReference后觸發gc,之后如果對象仍存活則dump內存并分析引用鏈并以Notification 形式反饋。
可以看出Leak Canary的主要邏輯觸發依賴activity 生命周期并且只進行了activity的內存檢測,但其內存監控邏輯完全可以重用,稍加改造就可以自定義需要內存監控的內容。