国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

android framework之AMS的啟動管理與職責

這篇具有很好參考價值的文章主要介紹了android framework之AMS的啟動管理與職責。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

  • AMS是什么?

AMS管理著activity,Service, Provide, BroadcastReceiver
android10后:出現(xiàn)ATMS,ActivityTaskManagerService:ATMS是從AMS中抽出來,單獨管理著原來AMS中的Activity組件 。
現(xiàn)在我們對AMS的分析,也就包含對ATMS的分析了。

  • AMS如何被別人管理?---被SystemServer的SystemServiceManager所管理
  • AMS如何被人使用? ?---通過將自己的Binder對象公布給ServiceManager,供APP使用
  • AMS如何啟動? ----通過SystemServer中的SystemServiceManager的startService進行啟動

這些涉及到SystemServer進程,專用門于管理AMS等各種服務的。

SystemServer.java->main():
  startBootStrap();
    //啟動atms.
    -->atm = mSystemServiceManager.startService(ActivityTaskManagerService.LiftCycle.className).getService();

SystemServer->借助SystemServiceManager輔助類來管理90個多Services,所以不同的Services均需要封裝成統(tǒng)一的父類即SystemService,這樣一來方便讓SystemServiceManager對它們進行統(tǒng)一管理 。(具體細節(jié)可以查看安卓啟動流程關于SystemServer啟動運行部分)
?

AMS、ATMS是給Application使用的, 怎么給Application使用的。通過Binder給到Application使用,我們需要將這些ATMS\AMS等服務的Binder注冊進ServiceManager. Application要使用它們的時候,會去公共的ServiceManager中去查找對應的ATMS或AMS的binder,通過他們提供的Binder接口來使用這些服務的。為了完成這些服務,所以這些在SystemServer中的Service在進行類定義時必須將自己extends 成IBinder(Stub類),這樣他們才能把自己的服務公布到ServiceManager中。

然后SystemServiceManager如何管理這些Services呢?是通過SystemService這個類(即LifeCycle)中的統(tǒng)一的接口如start(), stop(),restart()等
去間接管理各類Service.

  • 補充:關于類結(jié)構(gòu)設計啟發(fā):

如果需要讓一個類繼承多個父類時,java語言做不到,怎么辦?
解決辦法:可以在類里面創(chuàng)建一個內(nèi)部類(LiftCycle),內(nèi)部類去繼承需要的父類SystemService,在這個內(nèi)部類里面與我們的外部類(ATMS)結(jié)合來完成所有的功能。

  • 下面聊聊AMS的職責:

以ATMS為例,ATMS的onStart()服務做了以下動作:

publishBinderService();//公布服務
mService.start();//調(diào)用atms服務的start接口。
  -->atms在這個接口中只做一件事:
     //將ATMS自已添加到LocalServices中,這個比較重要,除了讓別人使用ATMS這個服務之外,
     //SystemServer進程自己有時也需要獲取使用這些服務,所以需要添加到LocalServices中。
     LocalServices.addService(); 

上面的邏輯可以看出ATMS啟動的時候沒做什么事情。

  • 下面看看AMS啟動:
ActivityManagerService.java->start():
  mProcessCpuThread.start(); //cpu監(jiān)控線程
  mBatteryStatsService.publish(); //注冊 電池狀態(tài)及權(quán)限管理

SystemServer在啟動完AMS后,會通過AMS啟動電池管理等各種處理,AMS要做的任務太多了
如下所示:

mAMS->initPowerManagement();
mAMS->setSystemProcess(); //為app進程安排后期的各種進程的監(jiān)控。
? -->注冊Activity至AMS內(nèi)的ServiceManager類中
? ? ?注冊服務的ProcStats,進程狀態(tài)
? ? ?注冊服務的meminfo,內(nèi)存信息
? ? ?注冊服務的gfxinfo,圖像信息
? ? ?注冊服務的dbinfo,數(shù)據(jù)庫信息
? ? ?注冊服務的cpuinfo,cpu信息
? ? ?注冊服務的processinfo,進程信息等,還有緩存,權(quán)限等

以上工作是為了后期可以通過adb命令去收集這些信息,adb去調(diào)用dump接口(),
把這些關鍵的信息收集起來。因此AMS要做非常多的事情,所以將ATMS(只管理Activity部分)剝離出去。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-693167.html

到了這里,關于android framework之AMS的啟動管理與職責的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Android Framework 之 啟動流程

    Android 系統(tǒng)的啟動流程 Android 系統(tǒng)的啟動流程可以分為以下幾個主要步驟: 引導加載器(Bootloader)啟動 :當你打開一個 Android 設備時,首先啟動的是引導加載器。引導加載器負責啟動 Android 的核心操作系統(tǒng)。 Linux 內(nèi)核啟動 :引導加載器加載并啟動 Linux 內(nèi)核。Linux 內(nèi)核負責

    2024年02月14日
    瀏覽(22)
  • android 13 WMS/AMS系統(tǒng)開發(fā)-窗口層級相關DisplayArea,WindowContainer第二節(jié)

    android 13 WMS/AMS系統(tǒng)開發(fā)-窗口層級相關DisplayArea,WindowContainer第二節(jié)

    接著上一節(jié)課學習,我們已經(jīng)清楚的知道了層級結(jié)構(gòu)應該怎么看,根據(jù)dumpsys的輸出可以完美復原出層級結(jié)構(gòu)樹,也理解了結(jié)構(gòu)樹對于層級結(jié)構(gòu)的控制作用。但還沒有從源碼部分對這個結(jié)構(gòu)樹進行一個分析,即分析生成這個結(jié)構(gòu)樹的源碼部分。 結(jié)下來調(diào)用是實現(xiàn)類DefaultProvid

    2024年02月15日
    瀏覽(20)
  • android framework之Applicataion啟動流程分析

    android framework之Applicataion啟動流程分析

    Application啟動流程框架分析 啟動方式一:通過Launcher啟動app 啟動方式二:在某一個app里啟動第二個app的Activity. 以上兩種方式均可觸發(fā)app進程的啟動。但無論哪種方式,最終通過通過調(diào)用AMS的startActivity()來啟動application的。 ?? 根據(jù)上圖分析, 要啟動一個Application,需要涉及五

    2024年02月11日
    瀏覽(26)
  • Android Framework學習之Activity啟動原理

    Android Framework學習之Activity啟動原理

    Android 13.0 Activity啟動原理邏輯流程圖如下:

    2024年02月05日
    瀏覽(24)
  • 【Android】Android Framework系列---CarPower電源管理

    【Android】Android Framework系列---CarPower電源管理

    智能座艙通常包括中控系統(tǒng)、儀表系統(tǒng)、IVI系統(tǒng) 、后排娛樂、HUD、車聯(lián)網(wǎng)等。這些系統(tǒng)需要由汽車電源進行供電。由于汽車自身的特殊供電環(huán)境(相比手機方便的充電環(huán)境,汽車的蓄電池如果沒有電是需要專業(yè)人士操作的),其電源狀態(tài)會比較復雜,既要滿足車內(nèi)的座艙系統(tǒng)

    2024年02月07日
    瀏覽(45)
  • Android Framework 常見解決方案(24)屏蔽FallbackHome,去除 Android正在啟動,直接進入Launcher

    開機以后,設備會有一個“android正在啟動”這樣的彈框,這個界面是一個叫FallbackHome的Activity來展示的。FallbackHome機制是Android系統(tǒng)啟動過程中的一種降級處理機制。當系統(tǒng)啟動時,如果默認的Launcher應用無法正常加載或出現(xiàn)錯誤,系統(tǒng)會自動啟用FallbackHome來替代默認Launcher。

    2024年01月24日
    瀏覽(23)
  • Android framework學習指南之Launcher啟動過程原理分析

    Android framework學習指南之Launcher啟動過程原理分析

    Launcher是一個用來顯示系統(tǒng)中已經(jīng)安裝的應用程序的應用程序,Launcher 在啟動過程中會請求PackageManagerService 返回系統(tǒng)中已經(jīng)安裝的應用程序的信息,并將這些信息封裝成一個快捷圖標列表顯示在系統(tǒng)屏幕上,這樣用戶可以通過點擊這些快捷圖標來啟動相應的應用程序,它的作

    2024年02月03日
    瀏覽(32)
  • Android 12系統(tǒng)源碼_窗口管理(一)WindowManagerService的啟動流程

    Android 12系統(tǒng)源碼_窗口管理(一)WindowManagerService的啟動流程

    WindowManagerService是Android系統(tǒng)中重要的服務,它是WindowManager的管理者,WindowManagerService無論對于應用開發(fā)還是Framework開發(fā)都是重要的知識點,究其原因是因為WindowManagerService有很多職責,每個職責都會涉及重要且復雜的系統(tǒng),這使得WindowManagerService就像一個十字路口的交通燈一樣

    2024年02月11日
    瀏覽(24)
  • 概念Android AMS

    Android的Activity Manager Service(AMS)是負責管理整個系統(tǒng)中Activity生命周期、任務棧、應用啟動等核心功能的系統(tǒng)服務。它通過系統(tǒng)級別的進程間通信(IPC)機制與應用程序組件交互,確保應用程序的行為符合Android的多任務處理邏輯和用戶的預期。AMS是Android系統(tǒng)架構(gòu)中的一個關

    2024年04月25日
    瀏覽(22)
  • Android Framework 全局替換系統(tǒng)字體

    Android Framework 全局替換系統(tǒng)字體

    基于Android 11 Android Framework 全局替換系統(tǒng)字體 將需要替換的字體資源放置frameworks/base/data/fonts/目錄下。 將系統(tǒng)默認的Roboto字體替換為HarmonyOs字體。 frameworks/base/data/fonts/fonts.xml frameworks/base/data/fonts/Android.mk frameworks/base/data/fonts/fonts.mk 編譯刷機驗證。 frameworks/base/graphics/java/and

    2024年02月12日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包