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按钮将该用户切换到后台,并在之后又打开该应用则会触发该事件。一般也很少重写该方法。
Xamarin.Android 入门之:Android的生命周期的更多相关文章
- Android入门(七)碎片的生命周期与限定符
原文链接:http://www.orlion.ga/560/ 这篇文章实际已经在上篇文章中写的差不多了,但是万恶的wordpress没保存!已经不止一次出现这种情况了! 一.碎片的生命周期 1.碎片的 ...
- Android 页面跳转之生命周期调用顺序问题
Android Activity 常用技巧 Android Activity 启动模式和任务栈 Android 页面跳转之生命周期调用顺序问题 一.页面跳转逻辑分析 1.1 跳转逻辑分析 Androi ...
- Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解
前言 大家好,给大家带来Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的概述,希望你们喜欢 Activity是什么 作为一个Activ ...
- Android React Native组件的生命周期及回调函数
熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期.今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧 在android开 ...
- Android开发之Activity的生命周期以及加载模式
本篇博客就来好好的搞一下Activity的生命周期,如果搞过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周 ...
- Android activity和service的生命周期对比
1Activity生命周期 七个方法 1. void onCreate(Bundle savedInstanceState) 当Activity被第首次加载时执行.我们新启动一个程序的时候其主窗体的o ...
- android切换屏幕时的生命周期
老版本总结: 1.不设置Activity的android:configChanges时 切屏会重新调用生命周期的方法,切横屏调用1次 切竖屏调用2次 2.设置Activity的android:conf ...
- Android学习整理之Activity生命周期篇
一.Activity生命周期说明 Activity的四种状态: ⒈活动状态(Active or Running):也称为运行状态,处于Activity栈顶,在用户界面中最上层,完全能被用户看到,能 ...
- 你还在问android横竖屏切换的生命周期?
本文原创,转载请注明来自xiaoQLuhttp://www.cnblogs.com/xiaoQLu/p/3324503.html 开源帮助android获得了飞速的发展,开源也导致了数不清的碎片问题. ...
- android学习笔记28——Activity生命周期
Activity生命周期 Activity的活动状态由android已Activity栈的形式管理,当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都有可能从活动状态转入非 ...
随机推荐
- Session原理简述
Session存在的意义,估计每个用做web开发的人都是了解的,就为了解决HTTP是个无状态协议所带来的问题,不多说了.这里主要想说的是服务端与客户端是如何利用session进行交互的. Sessio ...
- dedecms 分页样式
<div class="dede_pages"> <ul class="pagelist"> {dede:pagelist lis ...
- apache common包下的StringUtils的join方法
apache common包下的StringUtils的join方法: 关键字:java string array join public static String join(Iterator it ...
- OJ网站程序员必备
一. Online Judge简介: Online Judge系统(简称OJ)是一个在线的判题系统.用户可以在线提交程序多种程序(如C.C++.Pascal)源代码,系统对源代码进行编译和执行,并通过 ...
- DBus通讯
linux下进程间通信的方式主要有Pipe(管道),FIFO(命名管道),信号,共享内存,消息队列,信号灯等,这些方式各有 各得特点,如管道是linux下命令行中常用的,用于父子进程的通信.但是这些通 ...
- Feature Stapling in SharePoint 2010
http://msdn.microsoft.com/en-us/library/bb861862(v=office.12).aspx http://gallery.technet.microsoft. ...
- js 正则 数值验证
function checkTextDataForNORMAL(strValue) { // 特殊字符验证格式 var regTextChar = /([\*"\'<>\/])+ ...
- WPF 多线程处理(6)
WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 以下是子窗体的UI: <Window ...
- bnuoj 4207 台风(模拟题)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=4207 [题意]:中文题,略 [题解]:模拟 [code]: #include <iostrea ...
- Snapchat
"Mesaging service Snapchat reportedly turned down a $3 billion offer from Facebook?!" Ever ...