日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Android中深入研究Service

1 Service本質(zhì)結(jié)構(gòu)

我們還是從Service的根本意義分析入手,服務(wù)的本質(zhì)就是響應(yīng)客戶端請(qǐng)求。要提供服務(wù),就必須建立接收請(qǐng)求,處理請(qǐng)求,應(yīng)答客服端的框架。我想在Android Service設(shè)計(jì)者也會(huì)無(wú)時(shí)不刻把這個(gè)服務(wù)本質(zhì)框圖掛在腦海中。從程序的角度,服務(wù)一定要存在一個(gè)閉合循環(huán)框架和請(qǐng)求處理框架。

分析清楚服務(wù)框就必須弄清楚以下的機(jī)制及其構(gòu)成。

(1)閉合循環(huán)結(jié)構(gòu)放置在哪里?

(2)處理請(qǐng)求是如何分發(fā)和管理?

(3)處理框架是如何建立的?

(4)概念框架是如何建立的?

2 Service基本框架分析

Android設(shè)計(jì)中,Native Service和Android Service采用了同一個(gè)閉合循環(huán)框架。這個(gè)閉合循環(huán)框架放置在Native的C++空間中。

在服務(wù)框架中,ProcessState是公用的部分,這個(gè)公用部分最主要的框架就是閉合循環(huán)框架和接收到從Binder來(lái)的請(qǐng)求后的處理框架。我們將服務(wù)框架用ProcessSate來(lái)表示,簡(jiǎn)言之:

(1) addservice

(2) 建立閉合循環(huán)處理框架。

java代碼:

 
 
 
 
  1. int main(int argc, char** argv){
  2. sp proc(ProcessState::self());
  3. addService(String16("xxx0"), new xxx0Service());
  4. addService(String16("xxx1"), new xxx1Service());
  5. ProcessState::self()->startThreadPool();
  6. IPCThreadState::self()->joinThreadPool();//閉合循環(huán)框架
  7. }

2.1 Native Service

 Native Service是在系統(tǒng)Init階段通過(guò)Init.rc腳本建立的服務(wù)。

java代碼:

 
 
 
 
  1. int main(int argc, char** argv){
  2. sp proc(ProcessState::self());
  3. sp sm = defaultServiceManager();
  4. LOGI("ServiceManager: %p", sm.get());
  5. AudioFlinger::instantiate();
  6. MediaPlayerService::instantiate();
  7. CameraService::instantiate();
  8. AudioPolicyService::instantiate();
  9. ProcessState::self()->startThreadPool();
  10. IPCThreadState::self()->joinThreadPool();
  11. }

(1)服務(wù)進(jìn)程建立了ProcessState對(duì)象,并將給對(duì)象登記在進(jìn)程的上下文中。

(2)建立一個(gè)新AudioFlinger對(duì)象,并將對(duì)象登記Service Manager Service中。

(3)開始就收請(qǐng)求,處理請(qǐng)求,應(yīng)答這個(gè)循環(huán)閉合框架。

2.2 Android Service

Androids service是系統(tǒng)二階段(Init2)初始化時(shí)建立的服務(wù)。

在SystemServer.java中看不到循環(huán)結(jié)構(gòu),只是可以看到建立了init2的實(shí)現(xiàn)函數(shù),建立了一大堆服務(wù),并AddService到service Manager。

Init1()是在Native空間實(shí)現(xiàn)的(com_andoird_server_systemServer.cpp)。我們一看這個(gè)函數(shù)就知道了,原來(lái)這個(gè)閉合循環(huán)處理框架在這里:

init1->system_init() @System_init.cpp

在system_init()我們看到了這個(gè)久違的循環(huán)閉合管理框架。

java代碼:

 
 
 
 
  1. {
  2. Call "com/android/server/SystemServer", "init2"
  3. ProcessState::self()->startThreadPool();
  4. IPCThreadState::self()->joinThreadPool();
  5. }

網(wǎng)站名稱:Android中深入研究Service
URL標(biāo)題:http://www.5511xx.com/article/cogsgis.html