Activity工作过程
Activity工作过程:
Activity.startActivity-->
Activity.startActivityForResult-->
Instrumentation.execStartActivity-->
ActivityManagerNative.getDefault().startActivity-->
ActivityManagerService.startActivity-->
ActivityStackSupervisor.startActivityMayWait-->
ActivityStackSupervisor.startActivityLocked-->
ActivityStackSupervisor.startActivityUncheckedLocked-->
ActivityStack.resumeTopActivitiesLocked-->
ActivityStack.resumeTopActivityInnerLocked-->
ActivityStackSupervisor.startSpecificActivityLocked-->
ActivityStackSupervisor.realStartActivityLocked-->
ApplicationThread.scheduleLaunchActivity-->
(Handler)H.handleMessage->
ActivityThread.handleLaunchActivity->
ActivityThread.performLaunchActivity
performLaunchActivity主要完成如下几件事
1)从ActivityClientRecord中获取待启动的Activity的组件信息
2)通过Instrumentation的newActivity的newActivity方法使用类加载器创建Activity对象
3)通过LoadedApk的makeApplication方法来尝试创建Application对象
4)创建ContextImpl对象并通过Activity的attach方法来完成一些重要数据的初始化
5)调用Activity的onCreate方法
No1:
ApplicationThread是ActivityThread的一个内部类
ApplicationThraed继承了ApplicationThreadNative,而ApplicationThreadNative则继承了Binder并实现了IApplicationThread接口。
No2:
ActivityManagerService继承自ActivityManagerNative,而ActivityManagerNative继承自Binder并实现了IActivityManager这个Binder接口,因此AMS也是一个Binder,它是IActivityManager的具体实现。
Activity工作过程的更多相关文章
- activity工作的使用
一. 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑 采用工作 ...
- 《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程
第9章 四大组件的工作过程 9.1 四大组件的运行状态 (1)四大组件中只有BroadcastReceiver既可以在AndroidManifest文件中注册,也可以在代码中注册,其他三个组件都必须在 ...
- 【Android - 自定义View】之View的工作过程简介
View的工作过程分为三个过程: View的measure过程: View的layout过程: View的draw过程. 我们知道,一个Activity就是一个窗口,这个窗口中包含一个Window.一 ...
- 【Android开发艺术探索】四大组件的工作过程
个人博客 http://www.milovetingting.cn 四大组件的工作过程 四大组件:Activity.Service.BroadcastReceiver.ContentProvider ...
- 《CPU的工作过程》
本文转载自inter官方网址:https://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_proces ...
- 测试或运维工作过程中最常用的几个linux命令?
大家在测试工作过程中,可能会遇到需要你去服务器修改一些配置文件,譬如说某个字段的值是1 则关联老版本,是0则关联新版本,这时候你可能就需要会下vi的命令操作:或者查看session设置的时长,可能需 ...
- 主动模式下FTP的详细工作过程(转) 挺详细
主动模式下FTP的详细工作过程 PORT FTP是常用的FTP工作方式,当客户端的连接请求到来时,FTP服务器会利用默认的21端口与客户端建立连接,该连接属于命令通道,利用该通道来下达控 制指令: ...
- Nginx reopen reload作用及工作过程
http://www.iigrowing.cn/nginx-reopen-reload-zuo-yong-ji-gong-zuo-guo-cheng.html Nginx reopen reload作 ...
- LTE工作过程
LTE工作过程 一.LTE开机及工作过程如下图所示: 二.小区搜索及同步过程 整个小区搜索及同步过程的示意图及流程图如下: 1) UE开机,在可能存在LTE小区的几个中心频点上接收信号(PSS), ...
随机推荐
- laravel5.5 when()的用法
当你在使用where语句有前提条件时,比如某值为1的时候才执行where子句,否则不执行,这个时候,laravel5.5新出了一个简便方法when($arg,fun1[,fun2]). 具体用法如下: ...
- JavaScript数组的22种方法
原文:http://www.cnblogs.com/xiaohuochai/p/5682621.html javascript中数组的22种方法 前面的话 数组总共有22种方法,本文将其分为对象继 ...
- MySQL如何选择合适的引擎以及引擎的转换。
我们怎么选择合适的引擎?这里简单归纳一句话:"除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都应该优先选择InnoDB引擎." 除非万不得已,否则不建议混 ...
- 判断具有某个属性js、jQuery
if(!rr.classList.contains('invalid')){ updateCount(i,-1);//更新tab数量 } /*if(!$(rr).hasClass('invalid') ...
- linkinFrame--测试项目添加git管理
OK,前面一篇博客,已经搭建好了项目的基础的结构.现在我们添加一个简单的servlet来测试下项目能不能跑,然后在讲项目添加到coding上用git管理. 1,我们编写一个servlet,编写一个js ...
- PHP与XML
代码: <?php $dom= new DomDocument('1.0'); $books=$dom->appendChild($dom->createElement_x_x('b ...
- 【转】十分有用的linux shell学习总结
在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们 数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...
- 9 C. Hexadecimal's Numbers
题目链接 http://codeforces.com/contest/9/problem/C 题目大意 输入n,计算出n之内只有0和1组成的数字的数量 分析 k从1开始,只要小于n,就给sum++,并 ...
- vue调试神器vue-devtools安装
vue-devtools安装 vue-devtools是一款用来调试Vue应用的Chrome插件,可极大提高开发者调试项目效率,接着我们说一下如何下载安装这个插件; 一. 从chrome商店直接下载安 ...
- Node.js系列-express(上)
前言 Node.js系列的第一篇:http,大概描述了通过使用node.js内置的api创建一个服务并监听request实现简单的增删改查.现在,我们就通过通读express官网及使用express框 ...