格式化

廣告

廣告2

2016年11月16日 星期三

Android中Context的詳細說明與應用技巧


Android中Context的詳細說明與應用技巧
Activity mActivity =new Activity()
作為Android開發者,不知道你有沒有思考過這個問題,Activity可以new嗎?Android的應用程序開發採用JAVA語言,Activity本質上也是一個對象,那上面的寫法有什麼問題呢?估計很多人說不清道不明。Android程序不像Java程序一樣,隨便創建一個類,寫個main()方法就能運行,Android應用模型是基於組件的應用設計模式,組件的運行要有一個完整的Android工程環境,在這個環境下,Activity、Service等系統組件才能夠正常工作,而這些組件並不能採用普通的Java對象創建方式,new一下就能創建實例了,而是要有它們各自的上下文環境,也就是我們這裡討論的Context。可以這樣講,Context是維持Android程序中各組件能夠正常工作的一個核心功能類。

Context到底是什麼


Context的中文翻譯為:語境; 上下文; 背景; 環境,在開發中我們經常說稱之為「上下文」,那麼這個「上下文」到底是指什麼意思呢?在語文中,我們可以理解為語境,在程序中,我們可以理解為當前對象在程序中所處的一個環境,一個與系統交互的過程。比如微信聊天,此時的「環境」是指聊天的界面以及相關的數據請求與傳輸,Context在加載資源、啟動Activity、獲取系統服務、創建View等操作都要參與。
Context到底是什麼呢?一個Activity就是一個Context,一個Service也是一個Context。Android程序員把「場景」抽象為Context類,他們認為用戶和操作系統的每一次交互都是一個場景,比如打電話、發短信,這些都是一個有界面的場景,還有一些沒有界面的場景,比如後台運行的服務(Service)。一個應用程序可以認為是一個工作環境,用戶在這個環境中會切換到不同的場景,這就像一個前台秘書,她可能需要接待客人,可能要打印文件,還可能要接聽客戶電話,而這些就稱之為不同的場景,前台秘書可以稱之為一個應用程序。

如何生動形象的理解Context

上面的概念中採用了通俗的理解方式,將Context理解為「上下文」或者「場景」,如果你仍然覺得很抽象,不好理解。在這裡我給出一個可能不是很恰當的比喻,希望有助於大家的理解:一個Android應用程序,可以理解為一部電影或者一部電視劇,Activity,Service,Broadcast Receiver,Content Provider這四大組件就好比是這部戲裡的四個主角:胡歌,霍建華,詩詩,Baby。他們是由劇組(系統)一開始就定好了的,整部戲就是由這四位主演領銜擔綱的,所以這四位主角並不是大街上隨隨便便拉個人(new 一個對象)都能演的。有了演員當然也得有攝像機拍攝啊,他們必須通過鏡頭(Context)才能將戲傳遞給觀眾,這也就正對應說四大組件(四位主角)必須工作在Context環境下(攝像機鏡頭)。那Button,TextView,LinearLayout這些控件呢,就好比是這部戲裡的配角或者說群眾演員,他們顯然沒有這麼重用,隨便一個路人甲路人乙都能演(可以new一個對象),但是他們也必須要面對鏡頭(工作在Context環境下),所以Button mButton=new Button(Context)是可以的。雖然不很恰當,但還是很容易理解的,希望有幫助。

全文請見↓
文/尹star(簡書作者)
原文鏈接:http://www.jianshu.com/p/94e0f9ab3f1d
著作權歸作者所有,轉載請聯繫作者獲得授權,並標註“簡書作者”。

沒有留言 :