前面講解了Android的系統架構,而在應用層,Android的App組件架構,通常就是我們所說的Android四大組件,指的是Activity,BroadCastRecivicer,ContentProvider,和Service,他們失足成一個Android App的最基本的元素。
1.3.1 ? ?Android四大組件協同工作
Android中的四大組件的使用方法與使用場景都各不相同,但它們之間也保持著緊密的聯系,你中有我,我中有你,緊密相連,秘而不可分。
? ? ? ? ? ?Activity作為人機交互的第一界面,負責向用戶展示信息和處理結果,,而這些信息的來源可以通過資源獲取,也可以通過ContentProvider 來獲取其他應用的信息,或是Service從后臺計算、下載、處理的結果,當然也可以通過 BroadCastReceiver 獲取的廣播信息。同時Android系統還提供了一個信使------intent,作為信息的傳遞的載體。組件于組件之間通過Intent來通訊、傳遞信息、交換數據,正是通過這樣的一種形式,四大組件形成了各自獨立而又緊密相連的關系,讓整個Android系統“活” 了起來。
? ? ? ? ?Android四大組件在開發者的協調下,共同完成這開發者賦予他們的使命,他們之間沒有孰優孰略,所有的組件存在的道理就是為了讓程序能夠更好的實現開發者的功能。當然,熟知每個組件的功能、特點、,才能在使用時運籌帷幄。在這里,大家只需要對四大組件的協同工作模式有個基本的概念即可,隨著本書的講解,大家會慢慢掌握這些組件的使用技巧。
1.3.2 ? 應用上下文對象
? ? ? ? ?在高中的時候,語文課本上經常會出現這樣的一句話--------“請聯系上下文,分析這句話在文中的作用”,我們可理解為當前對象在程序中所處的一個環境,一個與系統交互的過程。
? ? ? ? Android系統的上下文對象,即在Context中,為我們封裝了這樣一個“語境”。Activity、Service、Application都是繼承自Context。
? ? ? ? Android應用程序會在如下所示的幾個時間點創建應用上下文Content。
? ? ? ? ? ? ? ?創建Application
? ? ? ? ? ? ? ?創建Activity
? ? ? ? ? ? ? ?創建Service
不難發現,創建Context的時機就是創建Context的實現類的時候。當應用程序第一次啟動時,Android系統會創建一個Application對象,同時創建application Context,所有的組件都共同擁有這樣一個Context對象,這個應用上下文對象貫穿整個應用進程的生命周期,為應用全局提供了功能和環境的支持,而創建Activity和Service組件時,系統也會給他們提供運行的上下環境,及創建Activity和Service實例的Context對象。所以跟多讀者在Acticity中獲取Context對象是,可以使用this,而在匿名內部內中就必須指定XXXactivity.this才可以獲取該Activity的Context對象。當然,你也可以通過getApplicationContext()方法來獲取整個App的Context,但是通過getApplicationContext()是獲得的是整個應用的上下文引用,這與某個組件的上下文引用,在某些時候還是有區別的。