該文章是一個系列文章,是本人在Android開發(fā)的漫漫長途上的一點感想和記錄,我會盡量按照先易后難的順序進行編寫該系列。該系列引用了《Android開發(fā)藝術探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相關知識,另外也借鑒了其他的優(yōu)質博客,在此向各位大神表示感謝,膜拜?。?!另外,本系列文章知識可能需要有一定Android開發(fā)基礎和項目經驗的同學才能更好理解,也就是說該系列文章面向的是Android中高級開發(fā)工程師。
站在用戶的角度思考問題,與客戶深入溝通,找到八步網站設計與八步網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網站制作、成都網站制作、企業(yè)官網、英文網站、手機端網站、網站推廣、國際域名空間、網絡空間、企業(yè)郵箱。業(yè)務覆蓋八步地區(qū)。前言
上一次還不如不說去面試了呢,估計是掛了,數據結構與算法方面雖然面試前突擊了一波,但是時間太短,當時學的也不好。另外Android的一些知識也不是很了解。不過這也加大了我寫博客的動力。許多知識總覺得自己掌握的還挺好,不過一問到比較細節(jié)的方面就不太清楚了。所以寫這整個博客的目的也是加深自己的知識,培養(yǎng)自己的溝通能力,和大家一起學習吧。
好了,閑話少說,我們這一篇先解決上一篇中遺留的問題,之后有時間的話,我把這次的面試經歷單寫一篇博客,和大家共勉。
本篇我們來看一下ServiceManager。上一篇中沒怎么說它,ServiceManager作為Android系統(tǒng)服務的大管家。我們還是有必要來看一下它的。
ServiceManager概述
ServiceManager是Android世界中所有重要系統(tǒng)服務的大管家。像前文提到的AMS(ActivityManagerService),還有許多以后可能分析到的PackageManagerService等等服務都需要像ServiceManager中注冊。那么為何需要一個ServiceManager呢,其重要作用何在呢?私認為有以下幾點:
ServiceManager能集中管理系統(tǒng)內的所有服務,它能施加權限控制,并不是任何進程都能注冊服務的。 ServiceManager支持通過字符串名稱來查找對應的Service。這個功能很像DNS。由于各種原因的影響,Server進程可能生死無常。 如果讓每個Client都去檢測,壓力實在太大了。 現在有了統(tǒng)一的管理機構,Client只需要查詢ServiceManager,就能把握動向,得到最新信息。
ServiceManager
[SystemServer.java]
public void setSystemProcess() { try { //注冊服務,第二個參數為this,這里假設SystemServer通過“socket”與SM交互 ServiceManager.addService(Context.ACTIVITY_SERVICE, this, true); .......... } catch (PackageManager.NameNotFoundException e) { ........ } }