標籤:
一.Android四大組件詳解
Android四大組件分別是:activity,service,content provider,broadcast receiver.
1.activity:
1).一個應用程式一般由多個activity組成.
2).任務棧(task stack)(別名(back stack)後退棧),記錄存放使用者開啟的activity.
3).一個應用程式被開啟之後,系統就會分配一個任務棧,當所有activity都退出時,任務棧清空.
4).任務棧的id是integer型的,是自增長的,它從1開始自增長,自增長值為1.
5).activity之間通過intent進行通訊.
6).app中每一個activity都必須在AndroidManifest.xml檔案中進行聲明,否則系統將不識別不執行該activity.
7).activity的啟動模式,standard(標準啟動模式),single Top(單一頂部),singletask(單一任務棧),singleInstance(單態,單例模式).
(1).standard,預設的標準啟動模式:每次startActivity都是建立一個新的activity,適用於絕大多數情況.
(2).single Top,單一頂部,如果要開啟的activity在任務棧的頂部已經存在,就不會建立新的執行個體,而是調用onNewIntent()方法.
應用情境:瀏覽器書籤.避免棧頂的activity被重複建立.
(3).single task,單一任務棧,activity只會在任務棧裡面存在一個執行個體,如果要啟用的activity在任務棧中已經存在,調用onNewIntent()方法,並且清空當前任務裡面的所有activity,
應用情境:瀏覽器的activity,整個任務棧只有一個activity.
(4).singlelnstance,單態單例模式,整個手機系統中只有一個任務執行個體,不同的應用去開啟一個activity,共用這個activity.
2.Service:
1).service用於使用者在後台完成獨立的操作,service分為兩種,started(啟動),bound(綁定):
a) Started(啟動):當應用程式組件調用startService()方法時服務停止,服務處於started狀態.
b) Bound(綁定): 當用用程式組件調用boundService()方法綁定服務時,服務處於綁定狀態.
2).started Service(啟動服務):是由其他組件調用startService()方法啟動的,導致服務的onStartCommand()方法被調用.當服務處於started的狀態時,其生命週期與啟動它的組件無關,服務需要在完成任務後調用stopSelf()方法停止,或者由其他組件調用stopService()方法停止.
3).使用bindService()方法啟動服務,調用的組件與服務綁定在了一起,該組件一旦退出服務也就終止.
4).開發人員需要在程式設定檔中生命全部的service,使用<service></service>標籤.
5).Service通常位於後台運行,一般不與使用者互動,所以Service組件沒有圖形化使用者介面.Service組件需要繼承Service基類.Service組件通常為其他組件提供後台服務或者監控其他組件的運行狀態.
6).長期在後台啟動並執行組件不要在activity中開啟子線程.應該是建立服務,在服務裡面開啟子線程.
3.Content provider:
1).android 平台提供了Content Provider 使一個程式的指定資料集提供給其他應用程式.其他應用可以通過contentResolver類從該類容中擷取存入的資料.
2).當多個應用程式中共用數組時可使用該組件.例如通訊錄,
3).ContentProvider實現數組共用.ContentProvider用於儲存數組和擷取資料,並對其所有應用程式可見.
4).ContentProvider使用URL來唯一標識其資料集.
4.Broadcast receiver:
1).廣播接收器專註於廣播通知資訊,並作出對應事件處理的組件.
2).應用程式可以擁有任意數量的廣播接收器.以對它感興趣的所有訊息作出響應.所有的接收器均繼承自BroadcastReceiver基類.
3).廣播接收者註冊有兩種方式:
a) 程式動態註冊.
b) AndroidManifest.xml檔案中進行靜態註冊.
4).動態註冊的特點:activity銷毀後,該廣播失效.靜態註冊只要裝置開啟廣播接收器就是開啟的.
Android四大組件的介紹