1.ActivityManager是android框架的一个重要部分,它负责一新ActivityThread进程创建,Activity生命周期的维护,本blog就是着手对ActivityManager框架作一个整体的了解
2.先看一个静态类结构图:

该图摘自 曹文斌blog<Activity Manager框架解析>
上图很清楚地描述了ActivityManager框架的几个主要类之间的关系,我们做应用开发接触很多的其实就是ActivityManager类,该类也在SDK中公布,应用可以直接访问,它提供了我们管理Activity的一些基本的方法
如下:
public void testgetRecentTasks()
//获取最近的应用,最后启动的排前
public void testgetRunningTasks()
//获取当前运行的Activity应用
public void testgetRunningServices()
//获取当前运行的service应用
public void testgetRunningAppProcesses()
//获取所用系统运行的进程
而这些操作都依赖于ActivityManagerProxy代理类的实现,IActivitManager接口定义了所有ActivityManager框架的操作,ActivityManagerProxy实现了接口IActivitManager,但并不真正实现这些方法,它只是一个代理类,真正动作的执行为Stub类ActivityManagerService,ActivityManagerService对象只有一个并存在于system_process进程中,ActivityManagerService继承于ActivityManagerNative存根类。
3.从前面分析知,ActivityManager存在于用户进程中,由用户进程调用获取Activity管理的一些基本信息,但是ActivityManager类并不真正执行这些操作,操作的真正执行在system_process进程中的ActivityManagerService,ActivityManagerService作为一个服务在system_process启动时被加载,关于ActivityManagerService如何被加载这里不展开讨论,后面在讨论android系统启动时在探讨,那么从ActivityManager到ActivityManagerService中间经过一个环节,那就是进程通信,而IActivityManager以及实现接口的代理类ActivityManagerProxy,存根类ActivityManagerNative起着负责进程通信的作用,我在前面的blog aidl实现机制浅析中有对进程通信作了较深入的分析,虽然这里没有使用aidl文件定义进程通信接口IActivityManager,其实是一样的,我们可以把它看做是自己手动编译的aidl进程通信java类实现,ActivityManagerProxy是代理类,ActivityManagerNative是Stub类,IActivityManager是aidl接口,这样就很容易理解了。
4.ActivityManager提供了很少的方法,要能够使用IActivityManager接口提供的其他方法我们可以直接使用ActivityManagerProxy对象,如何获取?
return ActivityManagerNative.getDefault()
不要被方法名称所迷惑,由于我们在用户进程调用,是不可能获取一个ActivityManagerNative对象的(再说ActivityManagerNative是一个abstract类),我们实际获取的是一个ActivityManagerProxy对象
理解以上ActivityManager框架基本结构,后面深入研究它就要容易许多了。

Android FrameWork——ActivityManager框架相关推荐

  1. Android FrameWork——PackageManager框架

    1.接着前面讲的ActivityManager框架,继续说一下系统另一个重要的框架,PackagerManager 同样先看一下静态类结构图: 大部分情况我们是在Activity中使用getPacka ...

  2. 鹅厂流出两份Android Framework技术宝典火了,完整版 PDF 限时开放下载

    前言 最近互联网大厂的"裁员潮"愈演愈烈-- 如何破局?我想最重要的一点:不断提升个人价值. Android Framework的重要性 Android Framework 开发虽 ...

  3. android framework,GitHub - zhaozepeng/Android_framework: android framework 用来快速开发的android框架...

    android_framework an android framework in order for rapid development ##1.开发环境## 环境为android studio + ...

  4. Android Framework 窗口子系统 (08)窗口动画之动画系统框架

    该系列文章总纲链接:专题分纲目录 Android Framework 窗口子系统 本章关键点总结 & 说明: 导图是不断迭代的,这里主要关注➕ 左上角 Android 窗口动画系统部分(因为导 ...

  5. Android Framework框架分析

    转自:微点阅读  https://www.weidianyuedu.com/content/2617738210126.html Android framework analysis (partI z ...

  6. Android Framework 记录

    记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4.telphony目录 文件 描述 CellIdentityCdma //描述电信通信标识 CellI ...

  7. Android Framework

    简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了. 记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4 ...

  8. 初识Android framework层

    Android系统的构成如下,从上到下依次是 Application应用层 Framework框架层 LIbrary系统库层 Linux内核层 关于Framework层: Android的Framew ...

  9. Android framework analysis

    Androidframework analysis AndroidFramework 分析(一) 1.目录树 /framework/base/api /framework/base/awt /fram ...

最新文章

  1. 校验正确获取对象或者数组的属性方法(babel-plugin-idx/_.get)
  2. Spring @CrossOrigin 通配符 解决跨域问题
  3. 窗口捕获显示黑屏_win10每次重启黑屏假死
  4. 公众号开发 单独 给某个用户 推送消息_韩国5G用户6月底已达134万 较5月底增加近70%...
  5. php 点击之后保留样式,通过不修改arc.archives.class.php而保留原有样式调上一篇下一篇...
  6. ASP.NET Core文件上传与下载(多种上传方式)
  7. 操作系统(王道笔记第三章内存)
  8. 写一个SFTP工具类实现连接
  9. 回调函数—Java实现
  10. 华为发布鸿蒙Beta版公测,华为推出鸿蒙OS 2.0手机开发者Beta版:P40、Mate 30系列可申请公测...
  11. 霍夫曼树和霍夫曼编码原理
  12. 泰拉瑞亚服务器怎么修改密码,泰拉瑞亚账号系统功能使用说明 怎么绑定手机号...
  13. 009 极限的四则运算定理(加、减、乘、除)
  14. CSS中子选择器和后代选择器之间有什么区别
  15. 还用老套路分析财务数据?这3种财务分析方法,你一定得看看
  16. Java接口继承接口
  17. troubleshooting之解决YARN队列资源不足导致的application直接失败
  18. 浅谈 什么是封装、继承与多态?
  19. 信息系统项目管理-立项管理
  20. java计算机毕业设计web高校车辆调度系统设计与实现(附源码、数据库)

热门文章

  1. Ubuntu:高效工作环境搭建
  2. Array.prototype.slice Array.prototype.splice 用法阐述
  3. 呕心沥血博一文--MySQL主从异步复制
  4. 【转】使用lockbits方法处理图像
  5. TP/TCP/UDP
  6. jbpm知识点——state
  7. 智能编撰:使用神经网络协助编写电子邮件
  8. 纯 js 让浏览器不缓存 ajax 请求
  9. Liferay7 BPM门户开发之24: Liferay7应用程序安全
  10. 程序、进程与线程的关系