Context理解

Context意思“上下文”,但是翻譯成“場景“”更容易理解,用戶與系統交互就是一個場景,比如我們看視頻,玩遊戲等,這些都是一個個場景。但是我們在開發的過程中需要經常用到context,有時用getApplicationContext().有時MainActivity.class,有時用this.這些又有什麼區別呢?

首先我們看下圖:


     

  由上面我們知道,activity和service最終都繼承於context.因此他們倆本質都是context.知道這些後,我們提出兩個問題:一個應用程序有多少context?actvity和service有什麼不同?

有多少context對象:

上面我們知道了一個activity和一個service都是一個context對象,我們也知道application也是一個context對象,所以一個應用的context對象=activity數量+service數量+1

service和activity的區別:

他們倆本質都是context,但是activity繼承於contextThemeWrapper和ContextWrapper,而service繼承於CintextWrapper.contextThemeWrapper的api定義是:允許你修改主題從包裹的是什麼背景。我們可以看出,他就是爲activity設置主題的。因此兩者雖然是同一個類型,但是通過不同的封裝和實現,實現了不同的功能。

ContextImpl類:

Support class for this package. 是個支持類,其實它纔是context的具體實現,程序啓動後有好幾處地方創建了contextImpl對象,但是其本質都是同一個context對象,程序啓動創建的application對象也就是它。



發佈了49 篇原創文章 · 獲贊 35 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章