Android FrameWork——ActivityManager框架
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框架相关推荐
- Android FrameWork——PackageManager框架
1.接着前面讲的ActivityManager框架,继续说一下系统另一个重要的框架,PackagerManager 同样先看一下静态类结构图: 大部分情况我们是在Activity中使用getPacka ...
- 鹅厂流出两份Android Framework技术宝典火了,完整版 PDF 限时开放下载
前言 最近互联网大厂的"裁员潮"愈演愈烈-- 如何破局?我想最重要的一点:不断提升个人价值. Android Framework的重要性 Android Framework 开发虽 ...
- android framework,GitHub - zhaozepeng/Android_framework: android framework 用来快速开发的android框架...
android_framework an android framework in order for rapid development ##1.开发环境## 环境为android studio + ...
- Android Framework 窗口子系统 (08)窗口动画之动画系统框架
该系列文章总纲链接:专题分纲目录 Android Framework 窗口子系统 本章关键点总结 & 说明: 导图是不断迭代的,这里主要关注➕ 左上角 Android 窗口动画系统部分(因为导 ...
- Android Framework框架分析
转自:微点阅读 https://www.weidianyuedu.com/content/2617738210126.html Android framework analysis (partI z ...
- Android Framework 记录
记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4.telphony目录 文件 描述 CellIdentityCdma //描述电信通信标识 CellI ...
- Android Framework
简介 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework框架层了. 记录 1.下载源码,目录如下: 2.Android系统的层次如下: 3.项目目录简单分析如下: 4 ...
- 初识Android framework层
Android系统的构成如下,从上到下依次是 Application应用层 Framework框架层 LIbrary系统库层 Linux内核层 关于Framework层: Android的Framew ...
- Android framework analysis
Androidframework analysis AndroidFramework 分析(一) 1.目录树 /framework/base/api /framework/base/awt /fram ...
最新文章
- 校验正确获取对象或者数组的属性方法(babel-plugin-idx/_.get)
- Spring @CrossOrigin 通配符 解决跨域问题
- 窗口捕获显示黑屏_win10每次重启黑屏假死
- 公众号开发 单独 给某个用户 推送消息_韩国5G用户6月底已达134万 较5月底增加近70%...
- php 点击之后保留样式,通过不修改arc.archives.class.php而保留原有样式调上一篇下一篇...
- ASP.NET Core文件上传与下载(多种上传方式)
- 操作系统(王道笔记第三章内存)
- 写一个SFTP工具类实现连接
- 回调函数—Java实现
- 华为发布鸿蒙Beta版公测,华为推出鸿蒙OS 2.0手机开发者Beta版:P40、Mate 30系列可申请公测...
- 霍夫曼树和霍夫曼编码原理
- 泰拉瑞亚服务器怎么修改密码,泰拉瑞亚账号系统功能使用说明 怎么绑定手机号...
- 009 极限的四则运算定理(加、减、乘、除)
- CSS中子选择器和后代选择器之间有什么区别
- 还用老套路分析财务数据?这3种财务分析方法,你一定得看看
- Java接口继承接口
- troubleshooting之解决YARN队列资源不足导致的application直接失败
- 浅谈 什么是封装、继承与多态?
- 信息系统项目管理-立项管理
- java计算机毕业设计web高校车辆调度系统设计与实现(附源码、数据库)