Android Context

什么是Context?


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

“請聯(lián)系上下文,分析這句話在文中的作用?!?/i>

在于文中,我們吧上下文理解為語境,在程序中,我們可以響應(yīng)的將上下文理解為:當(dāng)前對象在程序中所出的一個環(huán)境,一個系統(tǒng)交互過程——這就是Context。

Android 應(yīng)用程序在一下幾種情況下會創(chuàng)建一個Context:

? ? 1、創(chuàng)建一個Application

? ? 2、創(chuàng)建一個Activity

? ? 3、創(chuàng)建一個Service

讀過源碼的同學(xué)應(yīng)該會比較清楚Application、Activity、Service與Context的關(guān)系——即它們?nèi)齻€都是Context的子類。所以不難理解,不通對象的Context的生命周期會有相應(yīng)的差別。Application伴隨者App的整個生命周期,所以Application的Context對象也是一個貫穿整個App生命周期的Context對象,Activity,service的Context對象都與它們的生命周期相對應(yīng)。



Context的那些坑

1、內(nèi)存泄漏

圖1.1

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

一般我們可以采用一下的方法進(jìn)行優(yōu)化:

圖1.2
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容