大家好, 今天給大家介紹下我們在應用開發中最熟悉而陌生的朋友-----Context類 ,說它熟悉,是應為我們在開發中
時刻的在與它打交道,例如:Service、BroadcastReceiver、Activity等都會利用到Context的相關方法 ; 說它陌生,完全是
因為我們真正的不懂Context的原理、類結構關系。一個簡單的問題是,一個應用程序App中存在多少個Context實例對象呢?
一個、兩個? 在此先賣個關子吧。讀了本文,相信您會豁然開朗的 。
Context,中文直譯為“上下文”,SDK中對其說明如下:
Interface to global information about an application environment. This is an abstract class whose implementation
is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls
for application-level operations such as launching activities, broadcasting and receiving intents, etc
從上可知一下三點,即:
1、它描述的是一個應用程序環境的信息,即上下文。
2、該類是一個抽象(abstract class)類,Android提供了該抽象類的具體實現類(後面我們會講到是ContextIml類)。
3、通過它我們可以獲取應用程序的資源和類,也包括一些應用級別操作,例如:啟動一個Activity,發送廣播,接受Intent
信息 等。。
於是,我們可以利用該Context對象去構建應用級別操作(application-level operations) 。
一、Context相關類的繼承關系
相關類介紹:
Context類 路徑: /frameworks/base/core/java/android/content/Context.java
說明: 抽象類,提供了一組通用的API。
源代碼(部分)如下:
ContextIml.java類 路徑 :/frameworks/base/core/java/android/app/ContextImpl.java
說明:該Context類的實現類為ContextIml,該類實現了Context類的功能。請注意,該函數的大部分功能都是直接調用
其屬性mPackageInfo去完成,這點我們後面會講到。
源代碼(部分)如下: