返回
深入剖析Android 8.0 Activity启动流程之详细回调
Android
2023-12-02 20:26:55
引言
在上一篇文章中,我们介绍了应用进程请求AMS启动Activity的过程和Activity在AMS中的启动过程。我们还留下了一个问题:Activity的生命周期方法是如何被回调的?
本文将通过分析ActivityThread中的相关代码,详细解析Activity生命周期方法的回调过程,帮助读者深入理解Android系统Activity的启动机制。
Activity生命周期方法的回调过程
Activity的生命周期方法是在ActivityThread的handleLaunchActivity()方法中被回调的。handleLaunchActivity()方法负责处理Activity的启动请求,包括创建Activity对象、调用Activity的生命周期方法等。
handleLaunchActivity()方法的大致流程如下:
- 创建Activity对象
- 调用Activity的onCreate()方法
- 调用Activity的onStart()方法
- 调用Activity的onResume()方法
- 等待Activity的onPause()方法被调用
- 调用Activity的onStop()方法
- 调用Activity的onDestroy()方法
其中,步骤5是Activity生命周期方法回调过程中的一个特殊步骤。Activity的onPause()方法是在Activity失去焦点时被调用的,因此,在步骤5中,handleLaunchActivity()方法会等待Activity的onPause()方法被调用,然后才继续执行步骤6和步骤7。
Activity生命周期方法的回调时机
Activity的生命周期方法是在以下时机被回调的:
- onCreate():当Activity第一次被创建时被调用。
- onStart():当Activity即将变为可见时被调用。
- onResume():当Activity完全可见时被调用。
- onPause():当Activity即将变为不可见时被调用。
- onStop():当Activity完全不可见时被调用。
- onDestroy():当Activity即将被销毁时被调用。
需要注意的是,Activity的生命周期方法并不是严格按照上述顺序被调用的。例如,如果Activity在后台被销毁,那么它的onDestroy()方法会被直接调用,而不会调用onPause()和onStop()方法。
结语
本文详细解析了Activity生命周期方法的回调过程,帮助读者深入理解Android系统Activity的启动机制。读者可以结合上一篇文章的内容,对Activity的启动流程有一个更加全面的认识。