美文网首页
activity 启动分析

activity 启动分析

作者: bondPang | 来源:发表于2018-09-04 16:17 被阅读0次

    activity两种启动:launcher 启动 和 activity 调用启动

    一、launcher 启动调用 launcher 的 startActivitySafely 方法启动

    launcher也是一个应用,是桌面应用程序。我们安装的应用程序安装好后都会在launcher桌面应用程序显示一个启动图标。当我们点击图标的时候,就会启动 activity。但是要启动的activity是一个应用的activity,这个应用有个主启动的activity,我们需要在配置文件AndroidManifest.xml中配置这个应用要启动的主activity。这个配置需要在acitity的intent-filter节点的 category下配置LAUNCHER,告诉我们程序这个activity是主启动的。

    二、activity 启动activity  调用Activity.startActivity

        启动的相关类:

        Activity:startActivity方法的真正实现在Activity中,包括实现生命周期方法

       Instrumentation:用来辅助Activity完成启动Activity的过程

        ActivityThread:真正启动Activity的实现都在这里

    下面分析下启动流程:看startActivity源码:

    看上面源码,实际startActivity调用的是startActivityForResult。接着看源码

    实际上调用的启动activity方法的还是Instrumentation类调用:execStartActivity这个方法。

    而在execStartActivity这个方法中我们可以看到

    真正执行activity的启动过程的是ActivityManagerNative.getDefault().startActivity

    执行启动activity之后,有一个代码检查结果。

    ActivityManagerNative是抽象类,getDefault() 方法返回的是IActivityManager,也仅仅是一个接口而已;那么实际上我们跟踪代码会发现startActivity()也仅仅是IActivityManager的一个方法而已。

    IApplicationThread执行了启动activity,那么谁实现了该接口呢?当然是ApplicationThread,这个类是ActivityThread的内部类。里面很多的方法都对应了相关的activity生命周期方法,我们仅仅来看看scheduleLaunchActivity:

    相关文章

      网友评论

          本文标题:activity 启动分析

          本文链接:https://www.haomeiwen.com/subject/ssrbwftx.html