首先从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到屏幕的工作。

更多相关文章

  1. Android(安卓)自定义Viewpager滑动速度
  2. android软引用
  3. Android之Socket的基于UDP传输
  4. Android(安卓)Instrumentation源码分析(附Activity启动流程)
  5. Android中的BroadCastReceiver(广播接收者)————快速应用
  6. Imageview.setAdjustViewBounds用法
  7. android 通过intent调用短消息的正确方法
  8. Android(安卓)控制ScrollView滚动的实例详解
  9. Android(安卓)NDK开发之旅28--C++--vector容器、queue队列、stac

随机推荐

  1. Animation动画平移和旋转的结合使用
  2. 同一款Android软件有两样东西是不会变的:
  3. Android组件之服务---Service
  4. android知识点大总结
  5. [置顶] Android(安卓)开发系列:Android(安
  6. Android(安卓)的签名
  7. Android网络图片请求+二级缓存实现
  8. Android的Linux“心”
  9. Android系统字体规范与应用探索
  10. CyanogenMod源码下载和编译(Android(安卓