android framework之AMS的启动管理与职责

这篇具有很好参考价值的文章主要介绍了android framework之AMS的启动管理与职责。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • AMS是什么?

AMS管理着activity,Service, Provide, BroadcastReceiver
android10后:出现ATMS,ActivityTaskManagerService:ATMS是从AMS中抽出来,单独管理着原来AMS中的Activity组件 。
现在我们对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均需要封装成统一的父类即SystemService,这样一来方便让SystemServiceManager对它们进行统一管理 。(具体细节可以查看安卓启动流程关于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)中的统一的接口如start(), stop(),restart()等
去间接管理各类Service.

  • 补充:关于类结构设计启发:

如果需要让一个类继承多个父类时,java语言做不到,怎么办?
解决办法:可以在类里面创建一个内部类(LiftCycle),内部类去继承需要的父类SystemService,在这个内部类里面与我们的外部类(ATMS)结合来完成所有的功能。

  • 下面聊聊AMS的职责:

以ATMS为例,ATMS的onStart()服务做了以下动作:

publishBinderService();//公布服务
mService.start();//调用atms服务的start接口。
  -->atms在这个接口中只做一件事:
     //将ATMS自已添加到LocalServices中,这个比较重要,除了让别人使用ATMS这个服务之外,
     //SystemServer进程自己有时也需要获取使用这些服务,所以需要添加到LocalServices中。
     LocalServices.addService(); 

上面的逻辑可以看出ATMS启动的时候没做什么事情。

  • 下面看看AMS启动:
ActivityManagerService.java->start():
  mProcessCpuThread.start(); //cpu监控线程
  mBatteryStatsService.publish(); //注册 电池状态及权限管理

SystemServer在启动完AMS后,会通过AMS启动电池管理等各种处理,AMS要做的任务太多了
如下所示:

mAMS->initPowerManagement();
mAMS->setSystemProcess(); //为app进程安排后期的各种进程的监控。
  -->注册Activity至AMS内的ServiceManager类中
     注册服务的ProcStats,进程状态
     注册服务的meminfo,内存信息
     注册服务的gfxinfo,图像信息
     注册服务的dbinfo,数据库信息
     注册服务的cpuinfo,cpu信息
     注册服务的processinfo,进程信息等,还有缓存,权限等

以上工作是为了后期可以通过adb命令去收集这些信息,adb去调用dump接口(),
把这些关键的信息收集起来。因此AMS要做非常多的事情,所以将ATMS(只管理Activity部分)剥离出去。

 文章来源地址https://www.toymoban.com/news/detail-693167.html

到了这里,关于android framework之AMS的启动管理与职责的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Framework 之 启动流程

    Android 系统的启动流程 Android 系统的启动流程可以分为以下几个主要步骤: 引导加载器(Bootloader)启动 :当你打开一个 Android 设备时,首先启动的是引导加载器。引导加载器负责启动 Android 的核心操作系统。 Linux 内核启动 :引导加载器加载并启动 Linux 内核。Linux 内核负责

    2024年02月14日
    浏览(27)
  • android 13 WMS/AMS系统开发-窗口层级相关DisplayArea,WindowContainer第二节

    接着上一节课学习,我们已经清楚的知道了层级结构应该怎么看,根据dumpsys的输出可以完美复原出层级结构树,也理解了结构树对于层级结构的控制作用。但还没有从源码部分对这个结构树进行一个分析,即分析生成这个结构树的源码部分。 结下来调用是实现类DefaultProvid

    2024年02月15日
    浏览(31)
  • Android Framework学习之Activity启动原理

    Android 13.0 Activity启动原理逻辑流程图如下:

    2024年02月05日
    浏览(36)
  • android framework之Applicataion启动流程分析

    Application启动流程框架分析 启动方式一:通过Launcher启动app 启动方式二:在某一个app里启动第二个app的Activity. 以上两种方式均可触发app进程的启动。但无论哪种方式,最终通过通过调用AMS的startActivity()来启动application的。    根据上图分析, 要启动一个Application,需要涉及五

    2024年02月11日
    浏览(35)
  • 【Android】Android Framework系列---CarPower电源管理

    智能座舱通常包括中控系统、仪表系统、IVI系统 、后排娱乐、HUD、车联网等。这些系统需要由汽车电源进行供电。由于汽车自身的特殊供电环境(相比手机方便的充电环境,汽车的蓄电池如果没有电是需要专业人士操作的),其电源状态会比较复杂,既要满足车内的座舱系统

    2024年02月07日
    浏览(35)
  • Android Framework 常见解决方案(24)屏蔽FallbackHome,去除 Android正在启动,直接进入Launcher

    开机以后,设备会有一个“android正在启动”这样的弹框,这个界面是一个叫FallbackHome的Activity来展示的。FallbackHome机制是Android系统启动过程中的一种降级处理机制。当系统启动时,如果默认的Launcher应用无法正常加载或出现错误,系统会自动启用FallbackHome来替代默认Launcher。

    2024年01月24日
    浏览(37)
  • Android framework学习指南之Launcher启动过程原理分析

    Launcher是一个用来显示系统中已经安装的应用程序的应用程序,Launcher 在启动过程中会请求PackageManagerService 返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序,它的作

    2024年02月03日
    浏览(36)
  • Android 12系统源码_窗口管理(一)WindowManagerService的启动流程

    WindowManagerService是Android系统中重要的服务,它是WindowManager的管理者,WindowManagerService无论对于应用开发还是Framework开发都是重要的知识点,究其原因是因为WindowManagerService有很多职责,每个职责都会涉及重要且复杂的系统,这使得WindowManagerService就像一个十字路口的交通灯一样

    2024年02月11日
    浏览(32)
  • 概念Android AMS

    Android的Activity Manager Service(AMS)是负责管理整个系统中Activity生命周期、任务栈、应用启动等核心功能的系统服务。它通过系统级别的进程间通信(IPC)机制与应用程序组件交互,确保应用程序的行为符合Android的多任务处理逻辑和用户的预期。AMS是Android系统架构中的一个关

    2024年04月25日
    浏览(18)
  • Android Framework 全局替换系统字体

    基于Android 11 Android Framework 全局替换系统字体 将需要替换的字体资源放置frameworks/base/data/fonts/目录下。 将系统默认的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日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包