返回
Android源码解析系列1——Activity启动和界面加载
Android
2024-01-11 06:59:11
Activity的生命周期:Android开发的基础
简介
Android开发中,Activity是应用程序的核心组件,负责界面展示和用户交互。理解Activity的启动和界面加载过程对于开发者至关重要。本文将深入探讨Activity启动时调用的生命周期方法、界面加载过程以及一些关键问题。
Activity启动流程
Activity启动流程涉及以下主要步骤:
- 触发启动: 用户点击按钮或链接,触发Activity启动。
- 创建实例: 系统创建Activity实例。
- 调用onCreate()方法: 系统调用Activity的onCreate()方法。
- 创建界面: Activity创建并显示界面。
- 调用onStart()和onResume()方法: 系统调用Activity的onStart()和onResume()方法,Activity变得可见并获得焦点。
- 用户交互: 用户与Activity进行交互。
- 关闭Activity: 用户关闭Activity。
- 调用onPause()和onStop()方法: Activity失去焦点并不可见时,系统调用Activity的onPause()和onStop()方法。
- 销毁实例: 系统销毁Activity实例。
生命周期回调方法
Activity在其生命周期中处于不同状态时,会触发不同的生命周期回调方法:
- onCreate(): 首次创建Activity时调用。
- onStart(): Activity可见时调用。
- onResume(): Activity获得焦点时调用。
- onPause(): Activity失去焦点时调用。
- onStop(): Activity不可见时调用。
- onDestroy(): 销毁Activity时调用。
界面加载流程
Activity创建时,会调用onCreate()方法。在此方法中,Activity需要创建并显示界面。界面加载过程如下:
- setContentView(): Activity指定要显示的布局文件。
- 创建视图对象: 系统创建布局文件中定义的视图对象。
- 添加视图对象: 系统将视图对象添加到Activity的根视图中。
- 调用onDraw(): 系统调用视图对象的onDraw()方法,绘制视图。
界面渲染时机
值得注意的是,界面渲染是在Activity创建后进行的。因此,在onCreate()方法中,控件的宽高都是0。
要获取控件的宽高,需要等到界面渲染完成后。可以通过以下两种方式实现:
- onResume()方法: 在Activity的onResume()方法中获取控件的宽高。
- ViewTreeObserver: 使用ViewTreeObserver来监听控件宽高的变化。
常见问题解答
- 为什么Activity在创建时无法获取控件宽高? 因为界面渲染是在创建之后进行的。
- 如何在Activity创建时获取控件宽高? 可以在onResume()方法中获取,或使用ViewTreeObserver监听控件宽高的变化。
- 生命周期回调方法有什么顺序? onCreate()、onStart()、onResume()、onPause()、onStop()和onDestroy()。
- 界面加载过程的最后一步是什么? 调用视图对象的onDraw()方法,绘制视图。
- 除了onCreate()之外,Activity中还有什么其他重要的生命周期方法? onStart()、onResume()、onPause()和onStop()。
结论
理解Activity生命周期和界面加载过程对于Android开发人员至关重要。本文提供了有关这些概念的全面概述,以及解决常见的疑问。通过充分利用这些知识,开发者可以创建流畅且响应迅速的应用程序。