成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android中深入研究Service

移動開發 Android
關于Service,不管是Windows還是linux系統,相信大家應該遇到過很多自己解決不了的問題吧,那么本文來講述一下Android手機系統中的Service .

1 Service本質結構

我們還是從Service的根本意義分析入手,服務的本質就是響應客戶端請求。要提供服務,就必須建立接收請求,處理請求,應答客服端的框架。我想在Android Service設計者也會無時不刻把這個服務本質框圖掛在腦海中。從程序的角度,服務一定要存在一個閉合循環框架和請求處理框架。

分析清楚服務框就必須弄清楚以下的機制及其構成。

(1)閉合循環結構放置在哪里?

(2)處理請求是如何分發和管理?

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

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

2 Service基本框架分析

Android設計中,Native Service和Android Service采用了同一個閉合循環框架。這個閉合循環框架放置在Native的C++空間中。

在服務框架中,ProcessState是公用的部分,這個公用部分最主要的框架就是閉合循環框架和接收到從Binder來的請求后的處理框架。我們將服務框架用ProcessSate來表示,簡言之:

(1) addservice

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

java代碼:

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

2.1 Native Service

 Native Service是在系統Init階段通過Init.rc腳本建立的服務。

java代碼:

  1. int main(int argc, char** argv){  
  2. sp<ProcessState> proc(ProcessState::self());  
  3. sp<IServiceManager> 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();  

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

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

(3)開始就收請求,處理請求,應答這個循環閉合框架。

2.2 Android Service

Androids service是系統二階段(Init2)初始化時建立的服務。

在SystemServer.java中看不到循環結構,只是可以看到建立了init2的實現函數,建立了一大堆服務,并AddService到service Manager。


Init1()是在Native空間實現的(com_andoird_server_systemServer.cpp)。我們一看這個函數就知道了,原來這個閉合循環處理框架在這里:

init1->system_init() @System_init.cpp

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

java代碼:

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

【編輯推薦】

Service Broker基礎應用(上)

Service Broker基礎應用(下)

淺述遠程Service Broker的實現

Android開發之旅:Android架構

Android應用程序開發環境的搭建

責任編輯:zhaolei 來源: 移動開發者
相關推薦

2011-12-15 10:43:20

JavaNIO

2022-05-11 09:03:05

CSS容器文本換行

2013-01-07 13:38:56

Android開發布局長度單位

2010-11-18 17:24:27

Oracle旋轉ins

2018-12-24 15:00:58

混合云多云云采用

2010-11-23 16:35:59

MySQL刪除多表數據

2024-03-17 19:14:28

2022-04-19 08:28:34

main函數

2009-10-20 10:17:50

綜合布線系統驗收

2010-06-21 13:07:14

2010-05-31 17:45:50

MySQL行鎖

2010-11-26 11:57:35

MySQL結果字符串

2016-01-12 18:04:55

Java異常研究

2017-06-06 11:29:23

Java異常研究與分析

2009-12-08 18:45:17

PHP檢查函數可用

2021-05-25 09:00:00

Kubernetes容器集群

2023-11-03 08:25:28

數據結構Java

2010-05-19 14:45:46

2009-11-11 13:49:02

路由器技術

2012-10-29 10:30:36

CSSWeb前端display
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕日韩欧美一区二区三区 | 日韩一二区在线观看 | 欧美日韩精品久久久免费观看 | 欧美色综合一区二区三区 | 一级片网址 | 在线日韩 | 国产欧美一区二区三区在线看蜜臀 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲午夜精品视频 | 国产精品99久久久久 | 在线观看视频一区 | 在线观看亚洲专区 | 日本视频免费观看 | 日韩在线视频一区 | 国产精品福利在线观看 | 国产成人精品视频 | 一区二区三区四区视频 | 91精品国产一区二区在线观看 | 岛国av一区二区三区 | 国产福利在线 | 久久精品亚洲一区二区三区浴池 | 欧美福利影院 | 色婷婷国产精品综合在线观看 | 高清欧美性猛交 | 国产乱码一区 | 美女久久视频 | 日韩在线| 天堂一区二区三区四区 | 成人性生交大片免费看中文带字幕 | 九九亚洲 | 日韩一区二区三区在线视频 | 欧美成人精品一区二区男人看 | 国产精品视频一区二区三区不卡 | 四季久久免费一区二区三区四区 | 精品国产91| 特黄av| 国产精品久久国产精品 | 中文二区 | 九九热精品视频 | 日韩精品免费一区二区在线观看 | 欧美一区二区在线 |