成人免费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

2024-03-17 19:14:28

2018-12-24 15:00:58

混合云多云云采用

2010-11-23 16:35:59

MySQL刪除多表數據

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異常研究與分析

2022-04-19 08:28:34

main函數

2010-06-21 13:07:14

2009-10-20 10:17:50

綜合布線系統驗收

2010-05-19 14:45:46

2009-11-11 13:49:02

路由器技術

2009-12-08 18:45:17

PHP檢查函數可用

2023-11-03 08:25:28

數據結構Java

2021-05-25 09:00:00

Kubernetes容器集群

2010-08-23 17:47:33

DHCP服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产中的精品av涩差av | 中文字幕一区二区三区日韩精品 | 美女三区| 超碰人人艹| 日本成人一区二区 | 久草视频在线播放 | 久久精品亚洲成在人线av网址 | 狠狠伊人| 久热久草 | 国产精品区一区二区三区 | 欧美不卡视频一区发布 | 在线免费观看黄视频 | 久久免费视频2 | 99久久婷婷国产综合精品首页 | 香蕉久久久久久 | 成人欧美一区二区三区黑人孕妇 | 一区二区三区欧美大片 | 国产激情视频网站 | 久久69精品久久久久久国产越南 | 日韩一区二区免费视频 | 久久国产免费看 | 日韩精品亚洲专区在线观看 | 成年免费大片黄在线观看一级 | 91中文字幕在线观看 | 欧美一区免费 | 就操在线 | 日本免费在线看 | 成人av在线播放 | 日韩一区精品 | 欧美一区二区免费视频 | 黄色在线免费观看 | 欧美亚洲国产一区二区三区 | 久久久久国产精品一区二区 | 97在线观视频免费观看 | 欧美日一区二区 | 久久精品一级 | 久久涩涩 | 久久鲁视频 | 国产乱码久久久久久 | 黄色在线免费观看 | 91久久久www播放日本观看 |