服務——四大組件之一:
一,簡介
service和activity一樣都間接繼承自Context
service可以說是一個在後臺運行的Activity,它不是一個單獨的進程,它只需要應用告訴它要在後臺做什麼就可以了。
它要實現和用戶的交互的話需要通過通知欄或則是發送廣播,UI去接收顯示。它的應用十分廣泛,尤其是在框架層,應用更多的是對系統服務的調用。
它用於處理一些不干擾用戶使用的後臺操作。如下載,網絡獲取。播放音樂,他可以通過INTENT來開啓,同時也可以綁定到宿主對象(調用者例如ACTIVITY上)來使用。
服務是一個應用程序組件代表應用程序執行一個長時間操作的行爲,雖然不與用戶交互或供應功能供其它應用程序使用。每個服務類必須有一個相應的包的AndroidManifest.xml中 聲明。服務可以通過Context.startService()和Context.bindService()開始工作。它和其他的應用對象一樣,在他的宿主進程的主線程中運行。
service和activity一樣都間接繼承自Context
二,service的生命週期
1.context.startService() 啓動流程(後臺處理工作):
startService() -> onCreate() -> onStartCommand() -> Service running -> context.stopService() -> onDestroy() -> Service stop
所以調用startService的生命週期大致爲:
onCreate(只在創建的時候調用一次直到被摧毀) --> onStartCommand (服務開啓後,可多次調用) --> onDestroy
2.context.bindService()啓動流程(在本地同一進程內與Activity交互):
bindService() -> onCreate() -> onBind() -> Service running -> onUnbind() -> onDestroy() -> Service stop
bindService的生命週期簡化爲爲:onCreate --> onBind --> onUnbind --> onDestory。
三,服務創建的步驟:
第一步,創建服務類
ublic class MyService extends Service {}
第二步,在清單文件中註冊Service
第三步,啓動服務
(1)直接啓動服務的方式
Intent intent = new Intent(getApplicationContext(), MyService.class);
startService(intent);
(2)通過綁定啓動服務的方式
bindService(Intent service, ServiceConnection conn, int flags)
ServiceConnection可以監聽服務的狀態,在進行服務綁定的時,其標誌位可以爲以下幾種(這裏列出3種):
1).Context.BIND_AUTO_CREATE
說明:表示收到綁定請求的時候,如果服務尚未創建,則即刻創建,在系統內存不足需要先摧毀優先級組件來釋放內存,且只有駐留該服務的進程成爲被摧毀對象時,服務才被摧毀
2).Context.BIND_DEBUG_UNBIND
說明:通常用於調試場景中判斷綁定的服務是否正確,但容易引起內存泄漏,因此非調試目的的時候不建議使用
3).Context.BIND_NOT_FOREGROUND
四,2.Service與UI之間的通信方式
(1)使用直接啓動的startService實現信息傳遞
流程:UI ——>Service
操作:使用Intent進行數據傳遞,通過服務中的onStartCommand方法進行接受(和Activity間傳遞方式一樣)
(2)使用綁定啓動的bindservice實現信息傳遞(
流程:UI ——>Service
(3)使用Broadcast(廣播)進行信息的雙向傳遞
流程:UI <——>Service
操作:註冊綁定廣播接受器,之後通過廣播來進行二者間通信
服務(service)——四大組件之一
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
安卓中服務Service的詳解
四大組件之一:服務Service 一,定義 服務是一個沒有用戶界面的在後臺運行執行耗時操作的應用組件。其他應用組件能夠開啓Service,並且當用戶
smile0528
2020-06-19 09:23:52
android中廣播的理解
廣播(Broadcast) 一,簡介 Broadcast是android中四大組件之一,它經常不用,在推送中會用到。它屬於一種流氓組件,經常播報一些
smile0528
2020-06-19 09:23:52
android中適配器的分析
一,適配器. 顧名思義,就是把一些數據給弄得適當,適合以便於在View上顯示。可以看作是 界面數據綁定的一種理解。它所操縱的數據一
smile0528
2020-06-19 09:23:52
Android提示版本更新
小明搞开发
2020-02-25 08:20:33
dialog 的使用
小明搞开发
2020-02-25 08:20:33
Android APK反編譯就這麼簡單 詳解(附圖)
小明搞开发
2020-02-25 08:20:32
Content Provider應用實例
小明搞开发
2020-02-25 08:20:32
Android res目錄下的color.xml顏色總結
小明搞开发
2020-02-25 08:20:32
post請求方式和get請求方式等網絡請求方式總結
smile0528
2020-02-23 11:00:58
安卓中的context詳解
smile0528
2020-02-23 11:00:58
網絡請求——新聞客戶端的一個Demo
smile0528
2020-02-23 11:00:58
listview中子條目的適配方式
smile0528
2020-02-23 11:00:58