`
王树雄
  • 浏览: 242980 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

深入理解Activity生命周期

阅读更多

原文:http://android.yaohuiji.com/archives/141
理解Activity
Activity的生命周期
实例:观察翻转屏幕导致的Activity状态变化

 

一、理解Activity

Activity是Android程序的4大组件之一。
Activity是Android程序的表示层。程序的每一个显示屏幕就是一个Activity。
学过WEB开发的同学,可以把Activity理解成网页中的一个JSP文件;或者你可以把它理解成一个Windows的窗口。

下面看一下Activity类的继承关系:

image

从这里可以看到Activity是Context类的子类,大家对此先有个印象。

二、理解Activity的生命周期

手机最重要也是最基础的功能是打电话,也就意味着电话来的时候可能随时要把现在的程序暂停,如果电量不足的时候也可能随时要把现有程序关闭;因此 Android程序和电脑上的程序有所不同,具体到Activity,Activity的生命周期不是自身控制的,而是由Android系统控制的。

在android中Activity有四种基本状态:
1、Running

位于屏幕最前端时,此时处于可见状态,和用户可交互的状态。
2、Paused
当Acitivy被另一个透明的或者非全屏的Activity覆盖时的状态叫Paused状态,虽然可见但不可交互。
3、Stop
当Activity被另外一个Activity覆盖、界面不可见时处于Stop状态。
4、Killed
Activity被系统杀死或者跟本没启动时就是Killed状态。

我们下面看一下Activity的生命周期:

activity_lifecycle

下面是上图的简单翻译版本:

activity_lifecycle

Activity栈:
Android通过Activity栈的方式来管理Activity。

image
正在运行的Activity 处在在栈的最顶端,它是运行状态的;

当有新Activity进入屏幕最上端时,原来的Activity就会被压入第二层,如果他的屏幕没有被完全遮盖,那么他处于Pause状态,如果他被遮盖那么他处于Stop状态。

当然不管你出于任何一层,都可能在系统觉得资源不足时被强行关闭,当然关闭时在栈底的程序最先被关闭。

譬如:当你在程序中调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:他告诉 Activity Manager该Activity实例可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,把原 Activity 压入到栈的第二层,从 Running 状态转到 Paused 状态。

三.实例:观察翻转屏幕导致的Activity状态变化

Activity类中定义了和生命周期相关的一些方法,这些方法会在状态改变时被调用,譬如创建时调用的方法onCreate()。因此我们可以写一个程序,在程序的每个一个方法中写注释,然后看看运行时注释的打印顺序来跟踪Activity的状态变化。

本实例的具体视频创建及演示过程可以参见视频:观察翻转屏幕导致的Activity状态变化

下面是程序代码:

package android.basic.lesson4;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivityLife extends Activity {
String tag =”[MainActivityLife]“;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(tag, “onCreate”);
}

@Override
public void onStart(){
super.onStart();
Log.i(tag, “onStart”);
}

@Override
public void onPause(){
super.onPause();
Log.i(tag, “onPause”);
}

@Override
public void onResume(){
super.onResume();
Log.i(tag, “onResume”);
}

@Override
public void onStop(){
super.onStop();
Log.i(tag, “onStop”);
}

@Override
public void onDestroy(){
super.onDestroy();
Log.i(tag, “onDestroy”);
}
}

然后调出LogCat工具,来观察程序的运行细节。通过LogCat的过滤器我们可以看到程序启动、屏幕翻转、按后退键程序退出的过程,这有助于我们验证刚才所学的知识。

lesson4_life

我们可以看到屏幕翻转时,Android系统把ActivityLife这个Activity先杀死(具体顺序是先暂停、后关闭再销毁),然后再启 动(具体顺序是先创建,后启动再恢复)。通过这个例子我们也清楚的看到了,是Android系统而不是程序员在控制Activity的生命周期。

分享到:
评论

相关推荐

    android Activity生命周期详解(图文)

    总之,深入理解Activity生命周期和其背后的源码逻辑,对于编写高效、响应迅速且用户体验优秀的Android应用至关重要。开发者应熟练掌握这些知识点,以便在设计和调试应用时能得心应手。通过实践和分析ActivityDemo,...

    android Activity生命周期

    深入理解Activity生命周期,查看源码是非常重要的一步。通过阅读`ActivityManagerService`和`ActivityThread`类的源码,我们可以了解系统如何管理Activity的生命周期。例如,`ActivityThread`中的`...

    Android开发 - Activity生命周期

    源码分析是深入理解Activity生命周期的重要途径。通过阅读和分析Android系统的源代码,开发者可以了解系统如何调用Activity的生命周期方法,以及如何处理各种情况。同时,这也为自定义行为提供了基础,比如创建...

    Activity生命周期与启动模式

    **Activity生命周期** Activity的生命周期包括了从创建到销毁的各个阶段,主要有以下7个关键状态: 1. **创建(Created)**:当Activity首次被创建时,会调用`onCreate()`方法。在这里,通常进行初始化工作,如...

    实验一Android环境构建与Activity生命周期(1).doc

    通过这个实验,学生不仅能掌握Android开发环境的配置,还能深入理解Activity生命周期的不同阶段,这对于开发响应灵敏且高效的应用至关重要。尽管实验中可能遇到问题,但通过反复练习和讨论,学生可以逐步提高他们的...

    Android应用源码之8.Activity生命周期.zip

    通过这个压缩包中的源码,开发者可以深入理解Activity生命周期的细节,并学习如何在实际项目中优雅地处理生命周期事件。源码分析是一个很好的实践途径,可以帮助开发者从实际案例中积累经验,提高编程技能。

    2020-实验1-Activity生命周期验证(已完成)1

    Activity生命周期的理解和管理对于编写高效、响应式的Android应用至关重要。本实验旨在深入探索Activity的生命周期,并通过实践来理解各个阶段的工作流程以及它们之间的转换。 首先,我们来看一下Activity的生命...

    Android应用源码之(Activity生命周期)-IT计算机-毕业设计.zip

    本毕业设计Demo旨在帮助学生深入理解Activity生命周期,并提供实际操作的实践机会。 Activity的生命周期主要包括以下几个关键状态: 1. **创建(Created)**:当Activity首次启动时,会调用`onCreate()`方法。这是...

    Android activity生命周期示例

    本示例项目“Android activity生命周期示例”旨在帮助开发者深入理解Activity的生命周期及其各个阶段,这对于优化用户体验和资源管理至关重要。 Activity的生命周期包括以下几个主要状态: 1. **创建(Created)**...

    Activity生命周期分析

    这是Activity生命周期中的活跃状态。 - `onPause()`:当Activity即将被另一个Activity覆盖,但仍然部分可见时,系统调用`onPause()`。在此方法中,你应该保存临时数据,但不应执行耗时操作,因为它会影响新Activity...

    Activity生命周期demo

    通过谷歌官方的Activity生命周期示例,开发者可以实际操作并观察每个状态的触发顺序和条件,从而深入理解Activity如何在不同的用户交互和系统事件下进行状态切换。这有助于在实际开发中避免因对生命周期理解不足导致...

    android activity 生命周期详细介绍

    ### 一、Android Activity生命周期介绍 #### 1. onCreate() 当Activity首次创建时被调用,这是初始化Activity的最佳时机。在该方法中通常会执行一些初始化操作,比如设置布局文件、初始化UI组件等。 示例: ``` @...

    activity生命周期函数

    7. onDestroy():Activity即将被销毁时调用,这是Activity生命周期的最后阶段。在此阶段,可以做彻底的清理工作,例如关闭数据库连接、取消定时任务等。 二、Activity与Fragment的生命周期 Fragment是Android 3.0...

    Activity生命周期完美呈现

    在"Activity生命周期完美呈现"的项目中,开发者可以创建一个简单的Activity,通过Log输出或可视化的方式,展示Activity在不同状态间的转换,这样可以直观地看到每个生命周期方法的调用顺序,加深理解。 总之,理解...

    Activity生命周期源代码

    通过分析Activity的源代码,我们可以深入理解这些方法的工作原理。 1. **生命周期方法** - `onCreate()`: 当Activity首次创建时,系统会调用此方法。在这里,通常会进行初始化工作,如设置布局、绑定数据和初始化...

    Activity生命周期完整介绍

    在Android应用开发中,Activity是用户界面的主要组件,它负责与用户进行交互。理解Activity的生命周期至关重要,因为...通过阅读《三 activity生命周期.docx》文档,你将能更深入地理解这些概念,并在实际项目中应用。

    Activity生命周期Demo

    在深入探讨Activity生命周期之前,我们先理解一下Activity的基本概念。Activity代表一个可视化的用户界面,它可以是手机屏幕上的一个完整窗口,也可以是多个窗口的一部分。在用户与应用的交互过程中,Activity会经历...

Global site tag (gtag.js) - Google Analytics