Xamarin.Android 入门之:Android的生命周期

时间:2022-01-04 21:29:43

一、前言

活动是Android应用程序的基本构建块,他们可以在许多不同的状态存在。当你把一个Android程序置于后台,过一段时间再打开发现之前的数据还存在。

二、活动状态

下面的图表说明了一个活动可以通过在其生命周期中的状态:

Xamarin.Android 入门之:Android的生命周期

三、活动的生命周期

这里我们借助一张图帮助我们理解:

Xamarin.Android 入门之:Android的生命周期

1.Oncreate

这是活动被创建执行的第一个方法,OnCreate总是覆盖执行任何可能需要启动初始化的活动

例如:

l  创建试图

l  初始化变量

l  绑定静态数据列表

OnCreate拥有一个Bundle类型的参数bundle,这个参数至关重要,因为我们知道应用的生命周期不归自己管,所以就意味随时可能都会被终止,

所以我们就要能够保存这中间用户操作的数据,并在下次打开后能够恢复回去,而这里的bundle参数就是用来将上一个实例中保存的数据传递进来,

从而恢复用户上次的状态。下面的代码简单的演示了如何从bundle中获取数据:

protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle); string extraString;
bool extraBool; if (bundle != null)
{
intentString = bundle.GetString("myString");
intentBool = bundle.GetBoolean("myBool");
}
SetContentView(Resource.Layout.Main);
}

当OnCreate结束后,紧接着执行OnStart方法。

2.Onstart

这个方法总是在oncreate 执行完之后执行,我们可以重写该方法来指定一些特定的程序。

3.Onresume

当活动准备开始与用户交互时会触发该方法,一般只会在需要执行以下的操作时才重写该事件:

l  开始动画

l  开始监听GPS更新

l  显示一些相关的提示和对话框

l  注册广播监听

作为演示,下面是初始化照相机的代码:

public void OnResume()
{
base.OnResume(); if (_camera==null)
{
// 初始化
}
}

OnResume非常重要,特别是在触发OnPause后。用户又切回应用,那么就需要OnResume进行恢复。所以接着就是OnPause事件。

4.Onpause

当活动被切换到后台时将触发该方法,一般我们需要在该事件做如下的事情:

l  保存用户未提交的数据

l  关闭或清除引用的资源

l  注销广播

l  如果存在正在显示的提示或者对话框,则必须利用.Dismiss()进行清除。

作为演示,下面的代码将把照相机资源进行释放:

public void OnPause()
{
base.OnPause(); if (_camera != null)
{
_camera.Release();
_camera = null;
}
}

5.Onstop

当该活动长时间没有在显示给用户下就会触发,一般会由以下原因触发:

l  当一个新的活动打开,并覆盖该活动时

l  一个已存在的活动切换到前台时

l  活动被销毁时

OnStop不是每次都会被执行,如果内存低下时,系统将不会执行该事件,而是直接关闭该应用,所以大家在OnPause事件中就要保存好所以的参数等等。而不能依赖该事件

6.Ondestroy

这是在一个活动结束之前最后执行的方法,大多数活动不会重写此方法

7.Onrestart

当用户通过Home按钮将该用户切换到后台,并在之后又打开该应用则会触发该事件。一般也很少重写该方法。