Activity是一種展現型組件,具備兩種啓動方式:ide
在實現Activity時,須要繼承Activity抽象類,並重寫onCreate()方法,於是Activity具備啓動和中止概念。線程
Service是一種計算型組件,其生命週期是嵌套在主線程的。xml
Service有兩種啓動模式繼承
注意:在AndroidManifest.xml中註冊Service時,只須要註冊服務的類名便可。生命週期
啓動狀態和綁定狀態的區別在於:get
啓動以後,Service的動做不受Activity的控制(startService)域名
綁定以後,Service的動做是由Activity控制的(bindService)it
在實現Service時,須要繼承Service抽象類,並重寫onBind()方法,於是Service也具備啓動和中止的概念。ast
BroadcastReceiver是一種消息型組件。因爲BroadcastReceiver能夠在不一樣的組件甚至不一樣的應用之間傳遞消息,因此其能夠脫離Activity實現,除了要在AndroidManifest.xml中註冊廣播類名外,還須要添加IntentFilter,這樣就可讓Receiver選擇性的接受廣播。當註冊完成後,及時沒有Activity啓動,也能夠接受廣播。date
在實現BroadcastReceiver時,須要繼承BroadcastReceiver抽象類,可是不須要重寫onCreate()方法,只要重寫onReceive()方法便可。所以BroadcastReceiver沒有啓動和中止的概念,更像是一個系統級的監聽器。
ContentProvider是一種數據共享性組件,能夠在應用之間共享數據,因此與BroadcastReceiver同樣,其能夠脫離Activity實現。在實現ContentProvider時,須要繼承ContentProvider抽象類,而後在AndroidManifest.xml中註冊類名和ContentProvider的域名。
該類須要重寫六個方法,即onCreate(),query(),insert(),update(),delete(),getType()
與前三個組件不一樣,ContentProvider沒有使用intent,而是使用URI來判斷可否爲ContentResolver提供數據共享。