`

Android开发——Android生命周期

 
阅读更多

 

Activity的三种状态:

a)运行状态

b)暂停状态

c)停止状态

运行状态:

当Activity在屏幕的最前端,也就是当前显示页面时候,它是可见的并且有焦点,可以处理用户的操作:比如点击、双击、长按等,也就是激活运行状态,处理各个监听器的功能。

当内存不足的时候,Android会先封杀堆栈底层的Activity,也就是最先打开的Activity,类似于数组的堆栈压栈操作。

暂停状态:

在Activity可见但没有焦点,并且用户对Activity的操作没有响应,这样的状态是暂停状态。我在使用手机的时候,比如我打开了一个Activity,但在我退出的时候会弹出一个提示是否退出的对话框,这时候,我们之前打开的应用就变成了半透明效果并且处于暂停状态也没有焦点,我们做任何操作都无效;当前的焦点在提示退出的对话框上,所以这个对话框就处于运行状态,也就是激活状态中,我们可以做任何操作。

停止状态:

当Activity完全不可见的时候就处于停止状态。比如手机多任务状态运行的时候,很多程序都不在屏幕上显示,我们在不同的程序中切换不同的Activity,很多程序就在不停地做运行状态—>暂停状态—>停止状态的切换。这个过程就是Android程序的生命周期中要做的事情。

生命周期事件:

Activity状态的变化是随着我们的操作进入的,状态的改变会触发一些事件,也就是生命周期事件。一共有七个生命周期事件:

Void onCreate(Bundle savedInstanceState)

protected void onCreate(Bundle savedInstanceState)一个 Activity 的实例被启动时调用的第一个方法。一般情况下,我们都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据、设置用户界面等工作。大多数情况下,我们都要在这里从 xml 中加载设计好的用户界面。

Void onStart()

该方法在 onCreate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用。

Void onRestart()

Void onResume()

在 Activity 从 Pause 状态转换到 Active 状态时被调用。

Void onPause()

Void onStop()

在 Activity 从 Active 状态转换到 Stop 状态时被调用。一般我们在这里保存 Activity 的状态信息。

Void onDestroy()

在 Active 被结束时调用,它是被结束时调用的最后一个方法,在这里一般做些释放资源,清理内存等工作。

总结:

一、Activity从创建到进入运行状态所触发的事件:

onCreate() —>onStart()—>onResume()

二、当Activity从运行状态到停止状态所触发的事件:

onPause()—>onStop()

三、当Activity从停止状态到运行状态所触发的事件:

onRestart()—>onStart()—>onResume()

四、当Activity从运行状态到暂停状态所i触发的事件:

onPause()

五、当Activity从暂停状态到运行状态所触发的事件:

onResume()

具体关系如图所示

解释如下:

正在运行的Activity 处在在栈的最顶端,它是运行状态的;当有新Activity进入屏幕最上端时,原来的Activity就会被压入第二层,如果他的屏幕没有被完全遮盖,那么他处于Pause状态,如果他被遮盖那么他处于Stop状态。当然不管你出于任何一层,都可能在系统觉得资源不足时被强行关闭,当然关闭时在栈底的程序最先被关闭。

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

当你调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:告诉 Activity Manager 该 Activity 实例完成了相应的工作,可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,同时原 Activity 被压入到栈的第二层,从 Active 状态转到 Paused 状态。例如:从 Activity1 中启动了 Activity2,则当前处于栈顶端的是 Activity2,第二层是 Activity1,当我们调用 Activity2.finish()方法时,Activity Manager 重新激活 Activity1 并入栈,Activity2 从 Active 状态转换 Stoped 状态,Activity1. onActivityResult(int requestCode, intresultCode, Intent data)方法被执行,Activity2 返回的数据通过 data参数返回给 Activity1。

如上就是我对Android生命周期学习的总结。

 

分享到:
评论

相关推荐

    安卓Android源码——(Activity生命周期).zip

    本资料“安卓Android源码——(Activity生命周期).zip”着重探讨Activity从创建到销毁的各个阶段,以及在这些阶段中如何管理资源和响应用户或系统的事件。 Activity生命周期包含以下几个关键状态: 1. **初始状态**...

    安卓Android源码——(Activity生命周期).rar

    本资源“安卓Android源码——(Activity生命周期).rar”可能包含一系列关于Activity生命周期的讲解和示例代码,帮助开发者深入理解这一核心概念。 Activity生命周期主要包括以下几个关键状态: 1. **初始状态...

    解析Google Android SDK——智能手机开发范例手册-下载代码

    理解这些组件的交互和生命周期是Android开发的基础。 “c5”可能涵盖UI设计,包括布局管理器(如LinearLayout、RelativeLayout、ConstraintLayout)和视图控件(TextView、Button、ImageView等)。开发者还会学习...

    Android开发——从小工到专家(书签)

    理解Fragment的生命周期,以及如何在Activity中添加和管理Fragment,对于开发支持平板和手机的应用至关重要。 九、数据存储 Android提供了多种数据存储方式,包括SQLite数据库、SharedPreferences、文件系统和...

    android开发——简易计算器的设计报告.doc

    总结,设计一个简易计算器应用涉及Android开发的基本要素,包括理解Activity生命周期、Intent的使用以及布局管理。通过实践这些知识点,开发者不仅可以提升Android开发技能,也能深入理解面向对象编程思想在实际项目...

    [Android Studio应用开发——基础入门与应用实战][方欣,杨勃][电子课件]

    【Android Studio应用开发——基础入门与应用实战】是针对初学者和希望提升Android应用程序开发技能的人群设计的一门课程。这门课程由专家方欣和杨勃共同编写,旨在通过电子课件的形式,深入浅出地讲解Android ...

    Android教材————

    这份"Android教材"包含了关于Activity生命周期、Service使用以及Content Provider的讲解,这些都是Android应用开发的核心概念。 首先,我们来深入理解第六讲——Activity生命周期。Activity是Android应用程序的基本...

    android开发——简易计算器的设计报告.pdf

    通过上述的知识点,我们可以看出开发一个简易计算器应用需要了解Android开发环境的配置、掌握Activity生命周期的理解、熟悉布局文件的编写和界面组件的使用,以及编写能够响应用户操作的事件处理器。这些都是Android...

    Android学习3——Activity生命周期

    在“Android学习3——Activity生命周期”这个主题中,我们将深入探讨Activity如何启动、运行、暂停、停止以及销毁,并了解每个状态之间的转换。 Activity生命周期主要包括以下几个关键状态: 1. **初始状态...

    Android四大组件——Activity——Activity的生命周期.doc

    Android 四大组件——Activity——Activity 的生命周期 Android 四大组件中的 Activity 是一个非常重要的组件,它是用户与应用程序交互的入口。Activity 的生命周期是指从创建到销毁的整个过程,在这个过程中,...

    安卓Android源码——(遍历Body).rar

    因此,理解流的生命周期和如何有效地读取和释放资源是非常重要的。 6. **性能优化**:遍历大Body时,为避免一次性加载所有数据导致内存溢出,可以使用分块读取(chunked reading)。OkHttp提供了一种名为Source的...

    安卓Android源码——安卓Android学习——数据存储.zip

    结合使用,可以实现数据的实时更新和生命周期管理。 9. **云同步** 对于需要在多设备间同步的数据,可以利用Google的Firebase或自建服务器实现云同步。这涉及到网络请求、数据解析以及冲突解决等复杂问题。 10. *...

    Android 移动开发——打地鼠(Android Studio 版)Rat.zip

    - 实践Android的生命周期管理和状态保存恢复。 - 熟练使用Android Studio进行项目构建和调试。 这个“打地鼠”项目是学习Android开发的绝佳实践,它涵盖了Android开发的诸多核心概念,通过实际操作,开发者可以更...

    深入浅出Android——Android开发经典教材

    标题“深入浅出Android——Android开发经典教材”表明这是一本专注于Android开发的教学书籍,旨在帮助读者从基础开始学习,逐步深入到Android开发的各个方面。从描述中我们可以得知,这本书适合初学者,它通过详细的...

    安卓Android源码——Android游戏源码——忍者快跑.zip

    在本压缩包“安卓Android源码——Android游戏源码——忍者快跑.zip”中,包含的是一个基于Android平台的游戏应用源代码,名为“忍者快跑”。这个游戏源码是学习和研究Android游戏开发的理想资源,它能帮助开发者深入...

    动手学Android之七——Activity生命周期

    "动手学Android之七——Activity生命周期"这个主题深入探讨了Activity如何在应用程序中创建、运行、暂停、停止以及销毁的过程,这对于理解和优化应用性能至关重要。在这个例子程序中,开发者将有机会实践这些生命...

    安卓Android源码——ui开发类库示例源码.zip

    本资源“安卓Android源码——ui开发类库示例源码.zip”提供了丰富的UI开发示例,帮助开发者更好地理解和应用各种UI类库。下面,我们将详细探讨这些知识点。 1. **Android UI组件**:Android SDK包含了多种内置的UI...

Global site tag (gtag.js) - Google Analytics