先上类图:

基本类说明和运行框架
图中蓝色表示AMS进程,黄色表示app进程。
1. 全局调度者
在android中,AMS是activity和进程的全局调度者,也就是说系统中载入和准备载入的activity在AMS中
都有记录-ActivityRecord实例。AMS里有多个任务栈-ActivityStack(通过ActivityStackSupervior管理),用来分组管理这些ActivityRecord。AMS的调度机制和任务管理较为复杂,需要进一步单独分析。
2. 本地管理者
Activity运行在所属app进程中, 每个进程的主线程是ActivityThread,ActivityThread是对Activity调度的执行者。在这个类中,有一个activity的本地记录mActivities,记录的是进程中所有的activity信息。
3. 消息传递者
ActivityThread执行来自于AMS的命令,而中间传递命令的是ApplicationThread。 ApplicationThread是一个Binder实体类,同时实现了接口IApplicationThread。 此类通过IPC通信,接收来自AMS的消息,然后打包发送给ActivityThread里的mH handler处理, mH handler再通过performXXXAcitivity()函数调用Activity类中的perfromXXX()函数来执行生命周期函数。
ApplicationThreadProxy是ActivityThread的代理类,用来被AMS调用,与ApplicationThread进行IPC通信。
AMS的proxy类是ActivityManagerProxy,用于App或者其他service端调用来使用AMS的功能,如startActivity,startService等。

ActivityManagerService的更多相关文章

  1. ActivityManagerService是如何启动app

    ActivityManagerService是如何启动app 一.      上一篇文章app的启动过程,说明了launcher启动app是通过binber,让ActivityManagerServi ...

  2. 开机SystemServer到ActivityManagerService启动过程分析

    开机SystemServer到ActivityManagerService启动过程 一 从Systemserver到AMS zygote-> systemserver:java入层口: /** ...

  3. Android ActivityManagerService 基本构架详解

    学习AmS有段时日了,总结下,也好梳理一下自己的思路.小兵一个,有些地方理解不对,大家可以互相讨论,交流才有进步吗~~~ AmS可以说是Android上层系统最核心的模块之一,其主要完成管理应用进程的 ...

  4. Android 7.1 ActivityManagerService 屏幕旋转流程分析 (四)

    四.Activity的更新(旋转) sendNewConfiguration()会调用到ActivityManagerService的updateConfiguration()来update Conf ...

  5. ActivityManagerService启动过程分析

    之前讲Android的View的绘制原理和流程的时候,讲到过在Android调用setContentView之后,Android调用了一个prepreTravle的方法,这里面就提到了Activity ...

  6. 理解ActivityManagerService

    --摘自<Android进阶解密> *AMS家族* 1.Android 7.0的AMS家族 2.AMP和AMS进行通信 3.(Android 7.0)AMP是AMN的内部类,它们都实现了I ...

  7. Android解析ActivityManagerService(一)AMS启动流程和AMS家族

    前言 此前在Android系统启动流程.应用进程以及深入四大组件这三个系列文章中,都提及到了AMS,但都没有系统的来讲解它,本文就以AMS为主来进行讲解,其中会有一些知识点与这些系列文章有所重合,这里 ...

  8. Android系统服务(一)解析ActivityManagerService(AMS)

    相关文章 Android系统启动流程系列 Android应用进程系列 Android深入四大组件系列 前言 此前在Android系统启动流程.应用进程以及深入四大组件这三个系列文章中,都提及到了AMS ...

  9. ActivityManagerService数据结构Activity栈管理(二)

    ActivityManagerService要管理四大组件,那四大组件就必须在AMS中有存在的形式,这里先从AMS 如何管理Activity 谈起: Activity在AMS 中存在的形式为Activ ...

  10. Android解析ActivityManagerService(二)ActivityTask和Activity栈管理

    前言 关于AMS,原计划是只写一篇文章来介绍,但是AMS功能繁多,一篇文章的篇幅远远不够.这一篇我们接着来学习与AMS相关的ActivityTask和Activity栈管理. 1.ActivitySt ...

随机推荐

  1. Delphi代码规范

    1. 前言 本文档主要是为Delphi开发人员提供一个源代码书写标准,以及程序和文件的命名标准,使他们在编程时有一致格式可遵循.这样,每个编程人员编写的代码能够被其他人理解. 2. 源程序书写规范 2 ...

  2. python-基础-基础知识-变量-选择-循环

    1 基础知识 1.1 注释的分类 1.2 变量以及类型 变量定义 num1 = 100 #num1就是一个变量,就好一个小菜篮子 num2 = 87 #num2也是一个变量 result = num1 ...

  3. uva11401:Triangle Counting 递推 数学

    uva11401:Triangle Counting 题目读不清楚的下场就是多做两个小时...从1-n中任选3个不重复数字(不重复啊!!坑爹啊!)问能组成三角形的有多少个, 显然1~n能组成的三角形集 ...

  4. js 高亮显示关键字

    示例: var defaultEmphasisHandler = function(keyword, data){ var regex = RegExp("("+keyword.r ...

  5. Django项目:CRM(客户关系管理系统)--19--11PerfectCRM实现King_admin分页显示条数

    登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html list_per_page = 2 #分页条数 list_per_page = 2 #分页条数 ...

  6. TZ_06_SpringMVC_常用注解

    1. @Controller@RequestMapping(path = "/user")//一级目录 public class FormSubmit { @RequestMapp ...

  7. input[type=file]上传图片及转为base64码以及预览

    <input type="file" id="imgurl" capture="camera" accept="image/ ...

  8. git与github建立链接(学习笔记)

    总结步骤: 1.将所有文件添加到本库 git add . 2. git commit -m "提示信息随便写" 3.查看git修改状态 git status 4.获取远程库与本地同 ...

  9. Leetcode8.String to Integer (atoi)字符串转整数(atoi)

    实现 atoi,将字符串转为整数. 该函数首先根据需要丢弃任意多的空格字符,直到找到第一个非空格字符为止.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字 ...

  10. 模拟退火解TSP问题MATLAB代码

    分别把前四个函数存成m文件,再运行最后一个. swap.m function [ newpath , position ] = swap( oldpath , number ) % 对 oldpath ...