三原网站建设,饮料网站模板,上海防伪网站建设,wordpress泛域名插件它管理了系统的四大组件:Activity、Service、ContentProvider、Broadcast。 它除了管理四大组件外#xff0c;同时也负责管理和调度所有的进程 AMS相关目录结构 AMS代码主要在下面几个目录(AndroidQ上AMS相关部分功能移到了wm下)#xff1a; frameworks/base/core/java/andro…它管理了系统的四大组件:Activity、Service、ContentProvider、Broadcast。 它除了管理四大组件外同时也负责管理和调度所有的进程 AMS相关目录结构 AMS代码主要在下面几个目录(AndroidQ上AMS相关部分功能移到了wm下) frameworks/base/core/java/android/app/ frameworks/base/services/core/java/com/android/server/am/ frameworks/base/services/core/java/com/android/server/wm/
下面具体看下几个重要文件 frameworks/base/core/java/android/app/下
Activity.java所有Activity的父类。 ActivityManager.javaAMS的客户端提供给用户可调用的api。 ActivityThread.java应用进程的主线程类一般即UI线程。 frameworks/base/services/core/java/com/android/server/am/下
ActiveServices.java控制service的启动、重启等。 ProcessRecord.java记录每个进程的信息。 frameworks/base/services/core/java/com/android/server/wm/下
ActivityRecord.javaactivity对象信息的记录。 ActivityStack.java/ActivityStackSupervisor.java管理activity生命周期及堆栈等。 TaskRecord.java任务栈记录管理一个任务的应用activity ActivityTaskManagerService.java/ActivityTaskManagerInternal.java管理activity的启动和调度。 为什么需要使用 ActivityManagerProxy 的代理模式呢 AMS 是在system_server 进程中的其他进程要使用AMS就要在本进程中建立一个代理同时他们之间又是通过binder通讯的binder通讯本身采用的就是代理模式。 1.1 而在Android10.0中 有个ATMS的启动
ActivityTaskManagerService是Android 10新引入的变化也是系统服务用来管理Activity启动和调度包括其容器(task、stacks、displays等)。 Android 10将原先AMS中对activity的管理和调度移到了ActivityTaskManagerService中位置放到了wm下(见上面完整路径)因此AMS负责四大组件中另外3个(service, broadcast, contentprovider)的管理和调度。 首先看下 mSystemServiceManager.startService( ActivityTaskManagerService.Lifecycle.class)这行代码 是调用了系统服务管理器SystemServiceManager的startService方法在此以启动ATMS为例说明 源码位置/frameworks/base/services/core/java/com/android/server/SystemServiceManager.java