您的位置:

Android Application生命周期

一、生命周期概述

Android应用程序的生命周期是指从应用程序启动到结束的整个过程。当应用程序启动时,操作系统会创建一个应用程序进程并对其进行管理。在应用程序的生命周期中,系统会根据应用程序的状态来进行相应的处理,保证应用程序的顺利运转。

应用程序分为前台进程和后台进程两种,前台进程表示应用程序正在活跃运行,当前界面可见。后台进程表示应用程序虽然正在运行,但是当前没有可见界面。

二、应用程序的四种状态

应用程序共有四种状态:

  1. 运行状态(Running)
  2. 当应用程序启动后,进入运行状态,此时应用程序正在前台运行,所有相关资源都会被系统带入内存中,并且正在使用CPU资源运行。

  3. 暂停状态(Paused)
  4. 当应用程序进入后台运行,但是当前界面尚未被完全遮挡(比如显示一半,或被弹窗覆盖了部分区域)时,进入暂停状态,此时应用程序无法继续响应用户的任何操作,但是应用程序相关任务仍在后台继续进行,此时CPU资源的占用也会减少。

  5. 停止状态(Stopped)
  6. 当应用程序进入后台运行且当前界面已经被完全遮挡时,进入停止状态,此时应用程序进入休眠状态,会被系统从内存中清除,不再占用系统资源,但仍保留在后台,因此能够快速响应用户操作,此时如果用户再次返回该应用程序,系统会启动该应用程序,并且会重新创建相关资源。

  7. 销毁状态(Destroyed)
  8. 当系统发现系统资源不足,此时需要释放一些资源时,会回收一些应用程序的资源来保证系统能够正常运转,这个时候需要销毁应用程序。

三、生命周期方法详解

Android应用程序的生命周期主要包括以下方法:

onCreate()

该方法是应用程序的第一个回调,在该方法中可以进行前期的一些操作,如初始化变量、界面布局等。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

onStart()

该方法表示应用程序即将进入前台(visible),此时应用程序仅仅被激活,但是并不一定在用户的视野内。在onStart()方法中进行屏幕更新等操作。

protected void onStart() {
    super.onStart();
    // Update user interface here
}

onResume()

该方法表示应用程序即将进入前台可见(Resumed)状态,此时应该初始化UI相关的操作。

protected void onResume() {
    super.onResume();
    // Initialize UI components
}

onPause()

该方法表示应用程序即将进入后台不可见(Paused)状态,此时应该停止正在进行的任务并释放相关的资源,以便保证其他应用程序能够优先占用空间,避免系统资源被占用。在此方法中需要进行常规的保存当前视图状态和进度的操作。

protected void onPause() {
    super.onPause();
    // Stop running tasks and release resources
}

onStop()

该方法表示应用程序即将进入后台不可见(Paused)状态,此时会释放UI相关的资源,但不会释放进程,因此在下次打开应用时会更快速启动。

protected void onStop() {
    super.onStop();
    // Free up UI resources
}

onDestroy()

该方法表示应用程序即将结束,此时应该释放所有资源,包括没有被释放的资源。

protected void onDestroy() {
    super.onDestroy();
    // Free up remaining resources
}

四、小结

一般来说,开发安卓应用时应该尽量做到轻量化,同时保证应用的响应速度。因此在应用开发中不妨采用以下策略:

  • 在不需要的时候及时释放相应的资源
  • 尽可能地避免使用耗时操作
  • 使用合适的数据结构来优化查询操作
  • 充分利用系统提供的相关工具,如多进程来优化应用性能。