zoukankan      html  css  js  c++  java
  • 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的具体实现。

  • 相关阅读:
    ajax遍历数组(实现百度搜索提示的效果)
    角色管理的增删改
    String与Date、Timestamp互转
    jquery
    认识拦截器
    验证表单介绍
    什么是struts2?
    如何理解OOP?
    请描述Java中的时间监听机制?
    hibernate3中session.get()与session.load()两个方法的区别?
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8296921.html
Copyright © 2011-2022 走看看