什么是Android活动生命周期?

时间:2020-02-23 14:28:43  来源:igfitidea点击:

Android是开源操作系统,可用于许多任务。
当我们启动或者打开android应用程序时,它会经历各种状态,这称为Android Activity生命周期。

Android简介

Android是基于Linux的开源操作系统,带有Java编程接口,可用于智能手机(支持Android OS的触摸屏设备)等移动设备。

它包含多个API,以支持基于位置的服务(例如GPS)。
它还广泛支持多媒体硬件控制,以使用相机和麦克风执行播放或者录制。
它支持多任务处理,我们可以从一个任务窗口移动到另一个任务窗口,并且多个应用程序可以同时运行。
这将为重用应用程序组件和替换本机应用程序提供机会。

有了这个,让我们进一步了解一下Android活动的生命周期。

什么是Android活动生命周期?

当用户浏览应用程序时,应用程序中的Activity实例会在其生命周期的不同阶段过渡。
Activity类提供了许多回调,这些回调使活动可以知道状态已更改:系统正在创建,停止或者恢复活动,或者销毁该活动所在的进程。

现在,借助生命周期方法和回调,更详细地了解Android Activity生命周期。

生命周期方法和回调

通常,活动生命周期具有七个回调方法:

  • onCreate()

  • onStart()

  • onResume()

  • onPause()

  • onStop()

  • onRestart()

  • onDestroy()

现在,让我们详细了解Android Activity生命周期方法和回调。
查看下图以了解生命周期。

我们必须意识到,程序是使用不同的编程语言从main()函数开始的。
同样,android通过调用onCreate()回调方法在活动中启动程序。
有一系列回调方法可启动一个活动,然后按上面的活动生命周期图中所示的不同方法进行分解:

  1. onCreate():在此状态下,将创建活动。

2. onStart():当活动对用户可见时,将调用此回调方法。

  1. onResume():活动位于前台,用户可以与其进行交互。

  2. onPause():活动被另一活动部分遮盖。
    前景中的另一项活动是半透明的。

  3. onStop():活动被完全隐藏并且对用户不可见。

  4. onRestart():活动从"已停止"状态返回或者与用户进行交互,或者活动结束运行并消失。
    如果活动返回,则系统调用 onRestart()7. onDestroy():活动被销毁并从内存中删除。

因此,这些是"活动生命周期"的各种方法。
现在,让我们看看生命周期方法和状态将要发生的情况。

  • `当我们打开应用程序时,它将经历以下状态:

onCreate()–> onStart()–> onResume()

  • "当我们按下后退按钮并退出应用程序时" onPaused()—> onStop()–> onDestory()

  • `当按下主页按钮时onPaused()–> onStop()

  • 在按下主页按钮后,再次从最近的任务列表中打开应用程序时,onRestart()–> onStart()–> onResume()

  • 从对话框中取消对话框或者后退按钮后onResume()

  • "如果电话正在响铃,并且用户正在使用该应用" onPause()–> onResume()

  • 通话结束后onResume()

  • "当手机屏幕关闭时" onPaused()–> onStop()

  • "当手机屏幕重新打开时" onRestart()–> onStart()–> onResume()

因此,在某些情况下,应用会经历各种状态。
现在,让我们看看如何借助下面的示例来实现这一点。

演示:实施活动生命周期

步骤1:首先,我们需要使用Java或者Kotlin编程语言构建一个简单的Android应用。
在此演示中,我使用的是Kotlin编程语言,因为与Java相比,Kotlin的代码行数更少。
如果我们想知道如何使用Java创建Android应用,请参考Android教程。
另外,如果我们想使用Kotlin创建Android应用程序,请查看Kotlin Android教程上的本文。

步骤2:构建应用程序后,我们需要配置MainActivity.kt类文件并覆盖回调方法。
让我们看下面的代码以更广泛地理解这一点。

package com.example.activitycycle
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
print("***App state: OnCreate***n")
Toast.makeText(getApplicationContext(),"App state: OnCreate",Toast.LENGTH_LONG).show();
}
override fun onStart() {
super.onStart()
print("***App state: OnStart***n")
Toast.makeText(getApplicationContext(),"App state: OnStart",Toast.LENGTH_LONG).show();
}
override fun onResume() {
super.onResume()
print("***App state: OnResume***n")
Toast.makeText(getApplicationContext(),"App state: OnResume",Toast.LENGTH_LONG).show();
}
override fun onStop() {
super.onStop()
print("***App state: OnStop***n")
Toast.makeText(getApplicationContext(),"App state: OnStop",Toast.LENGTH_LONG).show();
}
override fun onPause() {
super.onPause()
print("***App state: OnPause***n")
Toast.makeText(getApplicationContext(),"App state: OnPause",Toast.LENGTH_LONG).show();
}
override fun onRestart() {
super.onRestart()
print("***App state: OnReStart***n")
Toast.makeText(getApplicationContext(),"App state: OnRestart",Toast.LENGTH_LONG).show();
}
override fun onDestroy() {
super.onDestroy()
print("***App state: OnDestroy***n")
Toast.makeText(getApplicationContext(),"App state: OnDestroy",Toast.LENGTH_LONG).show();
}
}

基本上,在上面的示例中,我将覆盖所有方法并打印状态。
另外,我用过 Toast.makeText(),以在应用程序本身中显示生命周期方法。
每当应用程序经历各种状态时,它都会在应用程序本身中调用并显示方法。
这就是Android活动生命周期的工作方式。