Android FrameWork——ActivityManager框架
来源:互联网 发布:乐谱制作软件哪个好 编辑:程序博客网 时间:2024/05/19 00:14
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——ActivityManager框架
- Android FrameWork——ActivityManager框架
- Android FrameWork——ActivityManager框架
- Android FrameWork——ActivityManager框架
- Android FrameWork——ActivityManager框架
- Android FrameWork——ActivityManager框架
- Android源码学习之六——ActivityManager框架解析
- Android源码学习之六——ActivityManager框架解析
- Android源码学习之六——ActivityManager框架解析
- Android源码学习——ActivityManager框架解析
- Android源码学习之六——ActivityManager框架解析
- Android源码学习之六——ActivityManager框架解析
- Android源码学习之六——ActivityManager框架解析
- Android-ActivityManager框架解析
- android framework浅析之activityManager:
- android应用框架之ActivityManager
- Android的Framework分析---5 ActivityManager分析
- 移动端前端笔记 — 遇到的常见JS与CSS问题及解决方法
- Android FrameWork——PackageManager框架
- android.content.res.Resources$NotFoundException:String resource ID #0x86
- 面向列的mysql数据库引擎-BRIGHTHOUSE(infobright数据库)
- 【线段树套线段树】[ZJOI 2013] bzoj3110 K大数查询
- Android FrameWork——ActivityManager框架
- cf 498C Array and Operations 网络流
- Android项目版本选择与手机分辨率
- 【LeetCode从零单排】No26.Remove Duplicates from Sorted Array
- gstreamer 学习教程(一) 开发环境搭建
- 杭电ACM2085--核反应堆
- 订餐外卖饿了么网站
- ajax提交Form
- 阿里巴巴电话面试被鄙视经历