AMS原理分析

一、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
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值