zoukankan      html  css  js  c++  java
  • ActivityManagerService

    先上类图:

    基本类说明和运行框架
    图中蓝色表示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等。

  • 相关阅读:
    .net反编译原理
    科学使用Log4View2
    头条一面竟然问我Maven?
    SpringCloud Netflix(一) :微服务架构
    Linux环境安装Docker
    Quartz定时任务
    Jedis连接外部Redis
    宝塔phpmyadmin打不开的可能问题及解决方法
    文件上传 Window & Linux
    SpringBoot登录判断
  • 原文地址:https://www.cnblogs.com/hushpa/p/5332308.html
Copyright © 2011-2022 走看看