Android(安卓)Activity的显示过程简述
16lz
2021-01-25
首先从ActivityThread 类中main()函数中开始执行,调用 Looper.prepareMainLooper() 为 UI 线程创建一个消息队列(MessageQueue)
然后创建一个ActivityThread对象,在 ActivityThread 初始化的时候会创建两个对象,一个对象
final ApplicationThread mAppThread = new ApplicationThread();
final Looper mLooper = Looper.myLooper();
final H mH = new H();
H 继承于Handler类 ApplicationThread 继承于Binder 类,负责接收远程 ActivityManagerService 的IPC 调用,接收到消息会通过 H 把消息发送给消息队列,UI 主线程会异步的从消息队列中取出消息并执行相应的业务逻辑。
当ActivityThread 接收到ActivityManagerServer 发送start 某个Activity 的请求之后,会创建对应的Activity对象,从 Activity->PhoneWindows->DecorView->view->ViewGroup。创建完毕之后,Activity 需要把创建好的界面显示在屏幕当中,由 WindowsManager 代理管理WindowManagerService 提供的接口通知底层Linux 驱动完成显示UI到屏幕的工作。
然后创建一个ActivityThread对象,在 ActivityThread 初始化的时候会创建两个对象,一个对象
final ApplicationThread mAppThread = new ApplicationThread();
final Looper mLooper = Looper.myLooper();
final H mH = new H();
H 继承于Handler类 ApplicationThread 继承于Binder 类,负责接收远程 ActivityManagerService 的IPC 调用,接收到消息会通过 H 把消息发送给消息队列,UI 主线程会异步的从消息队列中取出消息并执行相应的业务逻辑。
当ActivityThread 接收到ActivityManagerServer 发送start 某个Activity 的请求之后,会创建对应的Activity对象,从 Activity->PhoneWindows->DecorView->view->ViewGroup。创建完毕之后,Activity 需要把创建好的界面显示在屏幕当中,由 WindowsManager 代理管理WindowManagerService 提供的接口通知底层Linux 驱动完成显示UI到屏幕的工作。
更多相关文章
- Android(安卓)自定义Viewpager滑动速度
- android软引用
- Android之Socket的基于UDP传输
- Android(安卓)Instrumentation源码分析(附Activity启动流程)
- Android中的BroadCastReceiver(广播接收者)————快速应用
- Imageview.setAdjustViewBounds用法
- android 通过intent调用短消息的正确方法
- Android(安卓)控制ScrollView滚动的实例详解
- Android(安卓)NDK开发之旅28--C++--vector容器、queue队列、stac