返回

Android源码解析系列1——Activity启动和界面加载

Android

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需要创建并显示界面。界面加载过程如下:

  1. setContentView(): Activity指定要显示的布局文件。
  2. 创建视图对象: 系统创建布局文件中定义的视图对象。
  3. 添加视图对象: 系统将视图对象添加到Activity的根视图中。
  4. 调用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开发人员至关重要。本文提供了有关这些概念的全面概述,以及解决常见的疑问。通过充分利用这些知识,开发者可以创建流畅且响应迅速的应用程序。