Activity-运行状态及生命周期

一、Activity是什么

Activity是四大组件之一,提供一个屏幕,用户可以用来交互为了完成某项任务。

二、Activity四种状态

2.1、基本状态

  • active/running(运行状态)

一个新 Activity启动入栈后,它显示在屏幕最前端,处理是处于栈的最顶端(Activity栈顶),此时它处于可见并可和用户交互的激活状态,叫做活动状态或者运行状态(active or running)。

  • paused(暂停状态)

Activity失去焦点, 被一个新的非全屏的Activity或者一个透明的Activity被放置在栈顶,此时的状态叫做暂停状态(Paused)。此时它依然与窗口管理器保持连接,Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被强行终止掉。所以它仍然可见,但已经失去了焦点故不可与用户进行交互。

  • stopped(停止状态)

如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。当系统内存需要被用在其他地方的时候,Stopped的Activity将被强行终止掉。

  • killed(销毁状态)

Activity被杀掉以后或者被启动以前,处于Killed状态。这是Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。

注:4种状态中,Running状态和Paused状态是可见的,Stopped状态和Killed状态时不可见的。

2.2、 状态转换

当一个 Activity实例被创建、销毁或者启动另外一个 Activity时,它在这四种状态之间进行转换,这种转换的发生依赖于用户程序的动作。下图说明了 Activity在不同状态间转换的时机和条件:

状态转换

三、Activity生命周期

Activity生命周期
  • onCreate()

这个方法在每一个Activity类都会有,当我们新建一个Activity类时,一定会重写父类的onCreate()方法,onCreate()方法会在Activity第一次被创建时调用。我们应该在这个方法中完成Activity的初始化操作,比如说加载布局,初始化布局控件,绑定按钮事件等。

  • onStart()

这个方法在Activity由不可见变为可见时调用。

  • onResume()

这个方法在Activity准备好和用户交互的时候调用。此时的Activity一定位于返回栈的栈顶,并且处于运行状态。

  • onPause()

这个方法在Activity被Dialog或透明的Activity覆盖的时候调用。

  • onStop()

这个方法在Activity完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的activity,那么,onPause()方法会得到执行,而onStop()方法并不会执行。

  • onDestroy()

这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。

  • onRestart()

这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了。

注:Android在界面跳转的时候,比如从Activity B 跳回 Activity A,并不是先执行B的onDestroy(),而是执行完B的onPause()之后就立即跳回A里的onResume()。在执行了A 的onResume()之后一两秒甚至更长一点的时间才执行B里的onDestroy()
这样的处理机制应该是为了能够立即响应用户的操作。这样的话一些操作就要放到onPause()里去执行。比如视频的暂停销毁或者一些反注册。所以对时间要求和Activity是否获取焦点密切相关的操作,不能放在onCreate()onDestroy()里,而应该考虑放在onResume()onPause()

你可能感兴趣的:(Activity-运行状态及生命周期)