Android Context到底是什麼

2021-08-20 16:10:49 字數 1243 閱讀 7692

乙個activity就是乙個context,乙個service也是乙個context。

android程式設計師把「場景」抽象為context類,他們認為使用者和作業系統的每一次互動都是乙個場景,比如打**、發簡訊,這些都是乙個有介面的場景,還有一些沒有介面的場景,比如後台執行的服務(service)。

乙個應用程式可以認為是乙個工作環境,使用者在這個環境中會切換到不同的場景,這就像乙個前台秘書,她可能需要接待客人,可能要列印檔案,還可能要接聽客戶**,而這些就稱之為不同的場景,前台秘書可以稱之為乙個應用程式。

乙個android應用程式,可以理解為一部電影或者一部電視劇集,activity,service,broadcast receiver,content provider這四大元件就好比是這部戲裡的四個主角:胡歌,霍建華,詩詩,baby。他們是由劇組(系統)一開始就定好了的,整部戲就是由這四位主演領銜擔綱的,所以這四位主角並不是大街上隨隨便便拉個人(new 乙個物件)都能演的。有了演員當然也得有攝像機拍攝啊,他們必須通過鏡頭(context)才能將戲傳遞給觀眾,這也就正對應說四大元件(四位主角)必須工作在context環境下(攝像機鏡頭)。那button,textview,linearlayout這些控制項呢,就好比是這部戲裡的配角或者說群眾演員,他們顯然沒有這麼重用,隨便乙個路人甲路人乙都能演(可以new乙個物件),但是他們也必須要面對鏡頭(工作在context環境下),所以button mbutton=new button(context)是可以的。

如何獲取context

通常我們想要獲取context物件,主要有以下四種方法

1:view.getcontext,返回當前view物件的context物件,通常是當前正在展示的activity物件

有乙個靜態的drawable物件當imageview設定這個drawable時,imageview儲存了mdrawable的引用,而imageview傳入的this是mainactivity的mcontext,因為被static修飾的mdrawable是常駐記憶體的,mainactivity是它的間接引用,mainactivity被銷毀時,也不能被gc掉,所以造成記憶體洩漏。

2:不要讓生命週期長於activity的物件持有到activity的引用。

3:盡量不要在activity中使用非靜態內部類,因為非靜態內部類會隱式持有外部類例項的引用,如果使用靜態內部類,將外部例項引用作為弱引用持有。

Android context空指標異常

fragment中的 context 是null public class placeholderfragment extends fragment 這樣定義的context是null。當然咯,我實際 不是這樣寫的,可是這個意思。假設是在activity中就不會是空。在fragment中就是null...

關於Android Context的檔案管理函式。

在context api中,有幾組函式,如getexternalcachedir getdir getcachedir 等,返回的都是乙個file物件。這些函式在軟體的快取管理中,十分有用。現對照著api對這些函式的使用場景和區別作下總結。context.getdatabasepath string...

關於Android Context的檔案管理函式。

在context api中,有幾組函式,如getexternalcachedir getdir getcachedir 等,返回的都是乙個file物件。這些函式在軟體的快取管理中,十分有用。現對照著api對這些函式的使用場景和區別作下總結。context.getdatabasepath string...