面試系列「講一下吧」之 LeakCanary

2021-10-04 10:21:38 字數 1826 閱讀 3965

第一步:新增依賴

debugimplementation 'com.squareup.leakcanary:leakcanary-android:2.2'
第二步:沒了

androidmanifes.xml 的路徑為 :leakcanary-object-watcher-android/src/main/androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>

我們找到這個類,發現是乙個封閉類

//找到 oncreate 方法

override fun oncreate(): boolean

} sharklog.logger = defaultcanarylog()

checkmainthread()

return

}//上面是一些判斷邏輯,主要看下面幾行

//檢測activity

//檢測fragment

}//我們來分析activity的 -> activitydestroywatcher.kt

companion object

}private val lifecyclecallbacks =

//利用委託,不實現其他的生命週期方法,只關注其 destroy 方法

override fun onactivitydestroyed(activity: activity) received activity#ondestroy() callback")}

}}**

* watches the provided [watchedobject].

* * @param description describes why the object is watched.

*/@synchronized fun watch(

watchedobject: any,

description: string

) //注意觀察這個方法

removeweaklyreachableobjects()

val key = uuid.randomuuid()

.tostring()

val watchuptimemillis = clock.uptimemillis()

val reference =

keyedweakreference(watchedobject, key, description, watchuptimemillis, queue)

sharklog.d ") +

(if (description.isnotempty()) " ($description)" else "") +

" with key $key"

}

//把當前這個 reference 加到 map 裡面

watchedobjects[key] = reference

checkretainedexecutor.execute

}//這個方法叫 移除弱引用可達的物件,***我也不知道啥意思

//說人話: 就是從這個queue中取這個 ref ,如果能取到,說明這個 ref 將要被 gc,這個時候就沒有發生洩漏,我們就可以在 watchedobjects 中刪除掉這個 key。

private fun removeweaklyreachableobjects()

} while (ref != null)

}@synchronized private fun movetoretained(key: string)

}}困了,就先這樣。

女人都看一下吧

愚笨的 女人打擊男人 聰明的女人激勵男人。愚笨的女人盯著男人的缺點,老是生氣 聰明的女人欣賞男人的優點,很是 開心。愚笨的女人不分場合與男人爭吵,弄得男人很沒面子 聰明的女人在外人面前給足男人面子,私下再對男人嚴加管教。愚笨的女人貶低男人 她忘了 貶低男人就是貶低自己 聰明的女人讚賞男人 她明白 讚...

2023年總結一下吧

2021年了,時間真快,今天閒來無事,對過去的2020年做個簡單的總結 1 2020年,年初和年末,都被疫情干擾了,沒辦法,小小的病毒,把人類幹得一團糟,希望疫苗的出現,可以為人類挽回顏面。2 2020年復工初始,豪言 換一台漢蘭達,沒有實現,失敗。3 39歲的 老年人 寫了一年的 說輕鬆呢?還是累...

認識一下偽 吧

今天我希望在畫家的路上走走,驚嘆於css的神奇之餘,發現我對類似 的東西好陌生,於是乎,讓我們來認識一下它吧。first line 用於向文字的首行設定特殊樣式 first letter 用於向文字的首字母設定特殊樣式 font color background margin padding bor...