zoukankan      html  css  js  c++  java
  • Xamarin.Android 入门之:Android的生命周期

    一、前言

    活动是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按钮将该用户切换到后台,并在之后又打开该应用则会触发该事件。一般也很少重写该方法。

     

  • 相关阅读:
    英语初级学习系列-00-Name-介绍自己
    Solidworks实例学习
    数学——泰勒公式
    SolidWorks知识积累系列-01
    彻底弄懂HTTP缓存机制及原理
    基于 Pymsql 数据库连接池
    WEB框架之Flask
    Django使用消息提示简单的弹出个对话框
    代码的调试、运行
    微信公众号本地测试环境搭建(附带内网穿透工具使用)
  • 原文地址:https://www.cnblogs.com/huguodong/p/5822931.html
Copyright © 2011-2022 走看看