四大組件的做用(面試問到過)

1、Activity

Activity是一種展現型組件,具備兩種啓動方式:ide

顯示啓動,經過Intent實現 隱式啓動,也須要Intent,但還須要在AndroidManifest.xml中添加IntentFilter。 在實現Activity時,須要繼承Activity抽象類,並重寫onCreate()方法,於是Activity具備啓動和中止概念。學習

2、Service

Service是一種計算型組件,其生命週期是嵌套在主線程的。 Service有兩種啓動模式線程

  • 啓動狀態
  • 綁定狀態 注意:在AndroidManifest.xml中註冊Service時,只須要註冊服務的類名便可。 啓動狀態和綁定狀態的區別在於: 啓動以後,Service的動做不受Activity的控制(startService) 綁定以後,Service的動做是由Activity控制的(bindService) 在實現Service時,須要繼承Service抽象類,並重寫onBind()方法,於是Service也具備啓動和中止的概念。

3、BroadcastReceiver

BroadcastReceiver是一種消息型組件。因爲BroadcastReceiver能夠在不一樣的組件甚至不一樣的應用之間傳遞消息,因此其能夠脫離Activity實現,除了要在AndroidManifest.xml中註冊廣播類名外,還須要添加IntentFilter,這樣就可讓Receiver選擇性的接受廣播。當註冊完成後,及時沒有Activity啓動,也能夠接受廣播。 在實現BroadcastReceiver時,須要繼承BroadcastReceiver抽象類,可是不須要重寫onCreate()方法,只要重寫onReceive()方法便可。所以BroadcastReceiver沒有啓動和中止的概念,更像是一個系統級的監聽器。xml

4、ContentProvider

ContentProvider是一種數據共享性組件,能夠在應用之間共享數據,因此與BroadcastReceiver同樣,其能夠脫離Activity實現。在實現ContentProvider時,須要繼承ContentProvider抽象類,而後在AndroidManifest.xml中註冊類名和ContentProvider的域名。 該類須要重寫六個方法,即onCreate(),query(),insert(),update(),delete(),getType() 與前三個組件不一樣,ContentProvider沒有使用intent,而是使用URI來判斷可否爲ContentResolver提供數據共享。繼承

###總結: Activity和Service有生命週期,而BroadcastReceiver與ContentProvider採用監聽機制,沒有生命週期 四大組件都須要在AndroidManifest.xml中註冊 除了ContentProvider外,其餘組件都要用到intent 四大組件實現時都要繼承其抽象的父類 Service與Activity關係最爲密切,BroadcastReceiver和ContentProvider的實現基本不依賴與Activity。 今年金九銀十我花一個月的時間收錄整理了一套知識體系,若是有想法深刻的系統化的去學習的,能夠點擊傳送門,我會把我收錄整理的資料都送給你們,幫助你們更快的進階。生命週期

相關文章
相關標籤/搜索