Android

Activity的生命周期

勤劳的小蜜蜂 · 12月30日 · 2018年 ·

Activity是Android组件中最基本也是最为常见用的四大组件之一。Android四大组件有ActivityService(服务),Content Provider(内容提供),BroadcastReceiver(广播接收器)。

概要说明

  • Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。
  • Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View)来显示指定控件。
  • 在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
  • Activity之间通过Intent进行通信。

Activity的状态

Activity的状态有三种:

  • 运行中:当它在屏幕前台时(位于当前任务堆栈的顶部),它是激活或运行状态。它就是响应用户操作的Activity。
  • 已暂停:当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时,它处于暂停状态。在它之上的Activity没有完全覆盖屏幕,或者透明的,被暂停的Activity仍然对用户可见,并且是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接)。如果系统处于内存不足时会杀死这个Activity。
  • 已停止:当它完全被另一个Activity覆盖时则处于停止状态。它仍然保留所有的状态和成员信息。然而对用户是不可见的,所以它的窗口将被隐藏,如果内存不够,则系统经常会杀死这个Activity。例如当正在玩游戏时,有一个电话呼入,这时屏幕被电话来电的屏幕覆盖,这时游戏所在的Activity就进入已停止状态,如果出现内存不够的情况,系统就会杀死这个Activity,游戏当时的运行状态就会消失,这就要求程序设计时考虑这程情况,在进入停止状态时保存游戏的状态信息,以便下次游戏开始时能恢复到停止前的状态。

Activity的方法

方法
功能
void onCreate(Bundle savedInstanceState)是用于初始化Activity,所有初始化代码代码都就放在这里。
void onStart()当Activity正在变为用户所见时被调用。
void onRestart()在Activity停止后,在再次启动之前被调用。
void onResume()是一个Activity在显示之前必经的一个阶段,不论是从初始启动开始,还是暂停后重新开始,因此这是一个放置屏幕数据刷新的最佳机会。
void onPause()是一个Activity在离开显示之后必经的一个阶段,不论之后是被隐藏,还是被杀死,因此这是一个放置保存状态的最佳机会。
void onStop()当Activity不再为用户可见时调用此方法。这可能发生在它被销毁或者另一个Activity(现存的或者是新的)回到运行状态并覆盖了它。
void onDestroy()在Activity销毁前调用。这是Activity接收的最后一个调用。

图示

Android没有提供完全退出应用程序的方法,System.exit()方法也只是停止当前Activity而已。如果要完全退出应用程序,就必须想办法停止这个应用程序的所有Activity,这是一个比较麻烦的工作,所幸通常并不需要程序员来完成。

0 条回应