這篇文章主要介紹“Android中的Service有什么用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Android中的Service有什么用”文章能幫助大家解決問題。
創(chuàng)新互聯(lián)建站主要為客戶提供服務項目涵蓋了網(wǎng)頁視覺設計、VI標志設計、網(wǎng)絡營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應式網(wǎng)站建設、手機網(wǎng)站開發(fā)、微商城、網(wǎng)站托管及成都網(wǎng)站維護公司、WEB系統(tǒng)開發(fā)、域名注冊、國內外服務器租用、視頻、平面設計、SEO優(yōu)化排名。設計、前端、后端三個建站步驟的完善服務體系。一人跟蹤測試的建站服務標準。已經(jīng)為墻體彩繪行業(yè)客戶提供了網(wǎng)站推廣服務。
1 Service本質結構
我們還是從Service的根本意義分析入手,服務的本質就是響應客戶端請求。要提供服務,就必須建立接收請求,處理請求,應答客服端的框架。我想在Android Service設計者也會無時不刻把這個服務本質框圖掛在腦海中。從程序的角度,服務一定要存在一個閉合循環(huán)框架和請求處理框架。
分析清楚服務框就必須弄清楚以下的機制及其構成。
(1)閉合循環(huán)結構放置在哪里?
(2)處理請求是如何分發(fā)和管理?
(3)處理框架是如何建立的?
(4)概念框架是如何建立的?
2 Service基本框架分析
Android設計中,Native Service和Android Service采用了同一個閉合循環(huán)框架。這個閉合循環(huán)框架放置在Native的C++空間中。
在服務框架中,ProcessState是公用的部分,這個公用部分最主要的框架就是閉合循環(huán)框架和接收到從Binder來的請求后的處理框架。我們將服務框架用ProcessSate來表示,簡言之:
(1) addservice
(2) 建立閉合循環(huán)處理框架。
java代碼:
int main(int argc, char** argv){ spproc(ProcessState::self()); addService(String16("xxx0"), new xxx0Service()); addService(String16("xxx1"), new xxx1Service()); ProcessState::self()->startThreadPool(); IPCThreadState::self()->joinThreadPool();//閉合循環(huán)框架 }
2.1 Native Service
Native Service是在系統(tǒng)Init階段通過Init.rc腳本建立的服務。
java代碼:
int main(int argc, char** argv){ spproc(ProcessState::self()); sp sm = defaultServiceManager(); LOGI("ServiceManager: %p", sm.get()); AudioFlinger::instantiate(); MediaPlayerService::instantiate(); CameraService::instantiate(); AudioPolicyService::instantiate(); ProcessState::self()->startThreadPool(); IPCThreadState::self()->joinThreadPool(); }
(1)服務進程建立了ProcessState對象,并將給對象登記在進程的上下文中。
(2)建立一個新AudioFlinger對象,并將對象登記Service Manager Service中。
(3)開始就收請求,處理請求,應答這個循環(huán)閉合框架。
2.2 Android Service
Androids service是系統(tǒng)二階段(Init2)初始化時建立的服務。
在SystemServer.java中看不到循環(huán)結構,只是可以看到建立了init2的實現(xiàn)函數(shù),建立了一大堆服務,并AddService到service Manager。
Init1()是在Native空間實現(xiàn)的(com_andoird_server_systemServer.cpp)。我們一看這個函數(shù)就知道了,原來這個閉合循環(huán)處理框架在這里:
init1->system_init() @System_init.cpp
在system_init()我們看到了這個久違的循環(huán)閉合管理框架。
java代碼:
{ Call "com/android/server/SystemServer", "init2" ProcessState::self()->startThreadPool(); IPCThreadState::self()->joinThreadPool(); }
關于“Android中的Service有什么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。