2024年3月27日发(作者:)

activity的启动流程

Android Activity启动流程

1. 启动Activity过程:

(1)Android系统接收到启动Activity的命令后,首先会根据当前任

务栈检查当前任务中是否有此Activity;

(2)如果当前任务中存在此Activity,则Activity将回到栈顶;如果

不存在,则新建Activity;

(3)即生成一个新的Activity实例,然后通过calling attach(IBinder

token)调用连接到ActivityThread处理并添加到任务栈;

2. Activity对象创建过程:

(1)ActivityThread会调用handleLaunchActivity(ActivityClientRecord

r)方法,创建Activity对象;

(2)先根据在中的定义,加载此

Activity对应的class(Activity引用AppClassLoader加载);

(3)然后在LoadedApk类中调用makeActivity()方法创建此

Activity对象;

3. Activity实例化过程:

(1)ActivityThread会先调用handleResumeActivity方法创建一个新

的Activity实例;

(2)然后调用performCreate()方法,进而调用onCreate()方法,从而

Activity实例化。

4. Activity与Window的关联:

(1)ActivityThread在handleResumeActivity()之后会调用

performResume()方法,与Window进行关联;

(2)performResume()方法会调用dowManager()方法,

然后通过tentView(),将当前Activity的ContentView

添加到窗口中;

5. Activity可见:

(1)接着,ActivityThread会调用Activity的onStart()方法,此时

Activity变成可见的;

(2)接着调用onResume()方法,此Activity可见且处于运行状态。