Android Context

什么是Context?


讀過書的大家腦海里應該會有這么一個場景:

“請聯系上下文,分析這句話在文中的作用。”

在于文中,我們吧上下文理解為語境,在程序中,我們可以響應的將上下文理解為:當前對象在程序中所出的一個環境,一個系統交互過程——這就是Context。

Android 應用程序在一下幾種情況下會創建一個Context:

? ? 1、創建一個Application

? ? 2、創建一個Activity

? ? 3、創建一個Service

讀過源碼的同學應該會比較清楚Application、Activity、Service與Context的關系——即它們三個都是Context的子類。所以不難理解,不通對象的Context的生命周期會有相應的差別。Application伴隨者App的整個生命周期,所以Application的Context對象也是一個貫穿整個App生命周期的Context對象,Activity,service的Context對象都與它們的生命周期相對應。



Context的那些坑

1、內存泄漏

圖1.1

上面的單利引用了一個Context,看這好像沒什么問題,但是Context的來源是不能確定的,當MyUtil這個類被引用了,其所引用的Context就是一直被引用進而造成持有這個Context的類一直得不到釋放,故會造成內存的泄漏。

一般我們可以采用一下的方法進行優化:

圖1.2
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容