91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中的Service有什么用

發布時間:2022-04-12 14:30:53 來源:億速云 閱讀:270 作者:iii 欄目:編程語言

這篇文章主要介紹“Android中的Service有什么用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“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代碼:

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

2.1 Native Service

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

java代碼:

int main(int argc, char** argv){  sp<ProcessState> proc(ProcessState::self());  sp<IServiceManager> 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)開始就收請求,處理請求,應答這個循環閉合框架。

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代碼:

{  Call "com/android/server/SystemServer", "init2"  ProcessState::self()->startThreadPool();  IPCThreadState::self()->joinThreadPool();  }

關于“Android中的Service有什么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潼关县| 临沧市| 天柱县| 崇阳县| 鄱阳县| 临海市| 土默特左旗| 沙河市| 临漳县| 松潘县| 镶黄旗| 镇巴县| 平山县| 宜黄县| 秦皇岛市| 托克逊县| 淄博市| 习水县| 纳雍县| 天津市| 肃南| 澄迈县| 缙云县| 禄劝| 遵义县| 遵义市| 当阳市| 毕节市| 临邑县| 高青县| 阳城县| 德格县| 汤阴县| 石景山区| 奈曼旗| 读书| 永靖县| 晋宁县| 滦平县| 和田县| 东源县|