Activity深度剖析
来源:互联网 发布:敷面膜知乎 编辑:程序博客网 时间:2024/06/05 16:49
在了解Activity底层原理之前,首先要知道Framework层类的介绍
ActivityThread:不是一个线程,是一个app进程启动过程中在主线程当中的一个方法中开启了ActivityThread。启动之后会调用main方法,然后创建:
Looper.prepareMainLooper():主线程的loop对象
ActivityThread thread = new ActivityThread()
thread.attach(false):和AMS进行通信
Looper.loop()
等ActivityThread启动完成后会通知AMS(ActivityManagerServices),在交互的过程中就会拿到:
IActivityManager mgr = ActivityManagerNative.getDefault();远程代理对象
mgr.attachApplication(mAppThread);mAppThread是具体的bind对象的实例
ApplicationThread是用来和ActivityManagerServices进行通信的一个具体的实现类。在ActivityThread中就进行创建了ApplicationThread了
ActivityClientRecord是Activity的一个描述类,有ActivityInfo对Activity的信息的描述
ActivityRecord:主要是ActivityManagerServices所存储的一个Activity的一个记录底栈
Context:上下文环境,它是一个接口。通过具体的实现类来定义Activity,services,application
- Activity的生命周期的方法是通过Instrumentation来进行管理的,并且它还可以创建Application。启动Activity,起到一个辅助的作用。
- ActivityManagerNative是远程服务器的一个代理类对象,也是辅助进行Activity进行通信的。
- H handler是用来进行发送消息
Activity的onCreate()的创建是通过handleLaunchActivity调用performLaunchActivity,在performLaunchActivity里面首先通过classloader加载相关的Activity对象,然后创建Application对象,通过ContextImpl。之后调用activity.attach(),对Activity进行初始化相关的操作。有ContextImp,theme,Configuration,title进行初始化。然后和window对象进行关联。其实还是调用的是activity.attach,给window对象进行赋值,设置windowManager。最后创建一个帧布局,decodeView,是整个顶层布局的对象。然后回调自己的一些方法。mInstrumentation.callActivityOnCreate(activity,r.state)就创建出来了,onCreate()方法。
onResume():ViewManager对View进行管理,两个实现类,一个WindowManagerImpl,WindowManagerGlobal。还有ViewRootImpl对View的管理。通过activity.makeVisible()进行展示onResume()状态。
activity、window、windowManager三者之间有什么关系。
activity作为控制的层,负责整体的生命周期的管理,并接收我们windowManger发送过来的一些键盘的处理。而window就是我们的手机window,主要控制界面的显示和添加。但是所有界面的管理还是依靠我们的windowManager进行管理的。它可以与我们的远程的windowMangerServices进行交互。
onStop(),onDestroy().
- Activity深度剖析
- Android中Activity生命周期的深度剖析
- 剖析Activity
- 空指针深度剖析
- 空指针深度剖析
- 以太网深度剖析
- "长尾"深度剖析
- 深度剖析“考研现象”
- 深度剖析:具名常量
- 深度剖析云存储
- 深度剖析云存储
- #ifdef __cplusplus深度剖析
- libevent源码深度剖析
- Linux0.00深度剖析
- 深度剖析搜索引擎
- C语言深度剖析
- libevent源码深度剖析
- libevent源码深度剖析
- os.listdir()
- android studio 中要在app名称中添加&特殊符号
- Add Binary
- 深浅拷贝
- ios 拨打电话
- Activity深度剖析
- Problem 4 Largest palindrome product
- 计划任务里执行包含连接oracle命令的shell脚本报错:SP2-0667: Message file sp1<lang>.msb not found
- window下彻底卸载删除SQL Serever 2012
- (57)String类操作:获取、判断、转换
- 反序输出
- 【知识】贪心
- 用shell脚本实现监控程序自动重启
- 关于 SSH 工具里文件的颜色