栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android Framwork源码-AMS随记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android Framwork源码-AMS随记

Android Handler随记_暮冬一十四的博客-CSDN博客

Android Binder随记_暮冬一十四的博客-CSDN博客

Android Zygote随记_暮冬一十四的博客-CSDN博客

Android Framwork源码-PMS随记_暮冬一十四的博客-CSDN博客

AMS(ActivityManagerService)

在SystemServer的进程中,是SystemServer中的一个对象;

作用:

    管理activity的生命周期启动activity与PMS进行交互
ActivityThread
    每个应用有一个ActivityThread;是应用的入口;在APP进程中是AMS的缓存中心ActivityThread中的List activtes放了activity的启动记录

应用内activity与activity的跳转是跨进程通信,还是同一个进程内通信?

跨进程通信;

Activity->AMS:

    调用activity.startActivity()通过ActivityManage.getService("activity")得到AMS的BpBinder;通过BpBinder发送请求,调用AMS的startActivity()

AMS->PMS:

    AMS和PMS都在SystemServer进程中,都是SystemServer中一个对象通过包名和PMS里的缓存mPackage查询到App对应的Package使用activity的类名通过PMS里的内部类PackageManagerInternalImpl查询到activity对应的包装类ResolveInfo; ps:ResolveInfo这个javabean里有activityInfo、ServiceInfo等变量,查询啥就给哪个变量赋值,再返回ResolveInfo;得到ResolveInfo里的activityInfo;将activityInfo返回给App进程的ActivityThread;ActivityThread中发送事件ActivityThread中的Handler对象mH收到159事件,处理通过反射创建Activity对象将Activity对象放到activtes启动记录中

点击桌面App图标发生了什么?
    点击的APP图标是在单独的Luancher进程,是一个系统App进程Luancher进程请求SystemServer进程中的AMS去创建应用的根Activity(AndroidMnifest.xml中initen-fifter为Luanche的activity)AMS请求zygote进程创建App进程;zygote进程比较特殊, 使用Socket通信,而不是binder;zygote是所有应用的孵化器,zygote进程挂掉时,手机会自动重启;zygote进程去fork出App进程App进程通过binder告诉AMS应用App进程准备就绪AMS将从PMS查到的应用数据,序列化传给ActivityThread;ActivityThread发送给Handler发送bindApplaction事件通过反射实例化Instrumentation对象:负责生命周期的管理通过Instrumentation对象反射实例化new Applaction对象appInstrumentation调用callApplactionOnCreate(app)Applaction.onCreate()AMS将查到的根Activity(LaunchActivity )信息封装到Callback中给到ActivityThreadActivityThread发送变量为159的事件;Handler处理事件,从Callback中取出LaunchActivity信息调用hanldeLaunchActivity通过Instrumentation对象反射实例化newActivity()出对象activity调用activity.attach(),在attach中创建WMS的代理类;Instrumentation调用callActivityonCreate(activity)Activty.onCreate()

下图中4-5中少了上面6-18的步骤:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715805.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号