Android学习总结(一)——Activity概念、生命周期和启动模式

概念

Activity是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互。那到底什么是Activity呢?按我的理解是Android提供了一个界面,可以让用户进行点击和各种滑动操作,这就是Activity.

生命周期

首先来一个Activity生命周期图:

Android学习总结(一)——Activity概念、生命周期和启动模式_第1张图片

让我们来看一下各个回调方法的含义:

  1. onCreate:表示Activity正在被创建,这是生命周期的第一个方法。
  2. onRestart:表示Activity正在重新启动。一般情况下,当带当前的Activity从不可见到可见的时候,onRestart会被调用。
  3. onStart:表示Activity正在被启动,已经可见了,但是还没有出现在前台,还无法和用户进行交互。
  4. onResume:表示Activity已经可见了,并且出现在前台。
  5. onPause:表示Activity正在停止。
  6. onStop:表示Activity即将停止,可以做一些稍微重量级的回收工作,不能太耗时。
  7. onDestory:表示Activity即将被销毁,这是Activity生命周期的最后一个回调,我们可以做一些回收工作和最终的资源释放。

接下来可以通过两个例子来分析Activity生命周期的执行顺序:

第一个例子是我们长按Home键,系统返回桌面,则这个过程中Activity生命周期执行的顺序为:onPause->onStop,然后在点击APP图标启动APP,这个过程中Activity生命周期执行的顺序:onRestart->onStart->onRsume.

第二个例子是假设有两个Activity分别为A和B,从A跳转到B时,生命周期的执行循序:A:onPause->B:onCreate->B:onStart->B:onResume->A:onStop,然后在返回到A,顺序为:B:onPause->A:onRestart->A:onStart->onResume->B:onStop->B:onDestory.

上面是我们正常情况下Activity生命周期执行流程,假如在异常情况下导致Activity被杀死并重新创建,那么生命周期有是怎么样的呢?我们来看下图:

Android学习总结(一)——Activity概念、生命周期和启动模式_第2张图片

当Activity在异常情况下终止时,系统会调用onSaveInstanceStat来保存当前Activity的状态。这个方法的调用有可能在onPause之前调用,也有能在它之后调用。

当Activity被重新创建后,系统会调用onRestoreInstanceState,并把Activity销毁时onSaveInstanceState方法所保存的Bundle对象作为参数同事传递给onRestoreInstanceState和onCreate方法。 

启动模式

模式分类

  1. standard:标准模式,这是系统默认的模式。每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。
  2. singleTop:栈顶复用模式。如果你要启动的Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,会复用当前栈顶的Activity。
  3. sinleTask:栈内复用模式。这是一种单实例模式,在这种模式下,只要一个Activity在一个任务栈中存在,那么启动此Activity都不会重新创建实例,只会把任务栈中位于此Activity上面的其他Activity全部移出栈,使此Activity位于栈顶。
  4. singleInstance:单实例模式。当启动一个新的Activity时,系统会为它创建一个新的任务栈,然后这个Activity独立在这个新的任务栈中。

 Android学习总结(一)——Activity概念、生命周期和启动模式_第3张图片Android学习总结(一)——Activity概念、生命周期和启动模式_第4张图片

 Android学习总结(一)——Activity概念、生命周期和启动模式_第5张图片Android学习总结(一)——Activity概念、生命周期和启动模式_第6张图片

应用场景

标准模式就不用说了,我们就说其他的三种模式

  1. singleTop:适合接收通知的启动页面。例如,一些消息推送,接收到多个推送,每次都打开一个新的页面是不友好的,所以可以用这个启动模式。
  2. singleTask:适合作为程序的入口点。例如,浏览器的主页面,不管从多少个应用启动浏览器,只会启动主页面一次。
  3. sngleInstance:适合需要与程序分离开的页面。例如,闹钟提醒等。

你可能感兴趣的:(Andorid,Activity,生命周期)