《Android核心剖析》讀書筆記 第7章 理解Context

來源:互聯網
上載者:User

Context在我們實際開發中被廣泛用到,比如 startActivity(…)/getResources()/getSharedPreferences(…)/getSystemService(.)等等;書中把Context理解為一個應用情境,一個Activity執行個體就是一個應用情境,一個Service執行個體也是一種應用情境,只是他木有前台介面而已;與Context相關類的繼承關係如下:

  1. Context只是一個抽象類別,具體的邏輯實現全部都由ContextImpl完成;ContextImpl執行個體的建立幾乎都是在ActivityThread中完成的,比如 handleBindApplication(…)/ createBaseContextForActivity(…)/handleCreateService(…)分別對應載入APK應用、載入Activity、載入Service;
  2. ContextWrapper只是一個封裝類,同樣木有做任何具體的事情,他只是簡單的將請求轉寄給ContextImpl執行個體完成具體的邏輯執行;
  3. ContextThemeWrapper內部新增了對主題Theme相關的支援,其主題可以在AndroidManifest.xml中通過android:theme標籤為Application、Activity元素指定;
  4. Activity對應的前台介面,所以需要使用到主題,而背景Service沒有介面,不需要主題,所以直接繼承ContextWrapper;
  5. Application對象是在應用程式第一次啟動時最先建立的對象,每個應用有且只有一個Application對象,代表的是一個廣義的應用情境,他也與介面無關,所以也直接繼承ContextWrapper;開發人員可以繼承該類實現更多的商務邏輯,比如加入隨系統啟動時需要載入的資源或服務等;

系統中一共有多少個Context呢?

從上面的描述就可以看出啦,Context個數 = 1個Application + N個Activity + N個Service;

以上內容若有轉載,請註明出處,歡迎訪問老唐的專欄http://blog.csdn.net/sfdev

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.