AMS原理分析

android 专栏收录该内容
27 篇文章 0 订阅

一、AMS的主要作用:

1、统一调度Activity

(1)AMS中的重要数据类:

ProcessReccord:保存该进程中包含的APK信息、内存状态信息用于内存回收、组件列表

ActivityRecord:binder类可用于IPC调用(此处为WMS中调用),保存所有Acitivity信息,包括基本属性信息(包名、进程名、文件路径、图标主题等)和运行状态信息(idle、stop、finishing等)

TaskRecord:任务栈信息,管理Activity的启动和退出顺序。

除此之外,在frameworks\base\services\core\java\com\android\server\am路径中,还有serviceRecord、ProviderRecord、BoardRecord、ProcessRecord、UidRecord等近50个AMS相关的类。

(2)重要变量

如后台的Activity和近期任务的Activity最多20个,onpause必须在0.5秒内执行完,Activity必须在10秒内完成启动并回调给AMS。

(3)启动Activity

Acitivity的启动最终都会调用startActivity(),总体上就是ActivityThread和AMS和WMS的交互过程,详细过程这里不描述,大体流程如图,

Application加载后,先加载provider,然后才加载Activity。

2、内存管理

(1)关闭而不退出

应用关闭后,进程并未退出

(2)内存不够用时,Activity按优先级县回收后台的Activity,或使用OOM进程回收内存

3、进程管理

android一般是多进程单窗口的,因为WMS只会派发消息到当前窗口,其他后台的进程窗口接收不到窗口派发的消息。

二、AMS类的binder通信实现



 
  

  • 1
    点赞
  • 0
    评论
  • 10
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值