标签:
安卓四大组件中之一--Activity,深入理解这个组件的生命周期,是学习安卓不可缺少的一部分。话不多说,就拿谷歌官方Api文档的解析图来看看吧。
在安卓中Activity是以调用系列对应于生命周期中特定阶段的特定回调函数。来实现由Activiity的初始化到销毁的一系列状态。一个activity由一个回调函数序列开始,并且以一系列回调函数结束。需要注意的是当系统创建一个Activity时,所有的回调函数,其指向都是指向这个生命周期的顶部,使它可见可交互。
启动一个Actiivity:
从图上可以看出,一个应用程序通过onCreate()->onStart()->onResume().
*当调用onCreated()时表明这个Activity创建完成,onCreated()方法在整个Activity生命周期只会调用一次,onCreated方法调用是瞬时的。
*当调用onStart()是表明这个Activity已经可见了,但是还不具备交互功能,onStart方法也是瞬时的。
*当调用onResumed()是表明这个Activity可见且可交互,到达金字塔最顶端。
这就是Activity启动的过程。
暂停和恢复一个Activity:
例如,有时候,当当前Activity弹出了一个对话框是,当前Activity就被暂停了。由图可知,应用程序通过调用onPaused()暂停了一个Activity之后在通过onResum()恢复了这个Activity。
*当用户专注于另外一个ActivityB时,当前Activity就会调用onPaused(),此时ActivityB处于半透明状态,Activity不可交互。
*当用户从当前暂停状态回到Activity是,用户调用onResume()方法,恢复了Activity。
*通常在onPaused()方法中释放一些占用内尺的部件,如:动画,广播,照相机,视频等等,并且提交用户想要保存的东西,而需要在onResume中出事化这些部件。
停止和重启一个Activity:
当用户从你的app切换到另一个app时,你的Activity就会停止,又或者,用户在使用你的app时接到了一个电话,当用户重新切换回你的app时,Activity又重启了。
调用顺序:onPaused()->onStop->onReStart->onStart->onResume()
*无论Activity停止的方式是哪种,都必须先调用onPaused()再调用onStart().
*当停止时再返回时系统调用onReStart()
*在调用onStop方法时,应该向cup执行更多耿密集的操作,如写入数据库。
*onStart()的内容和onStop相对应。
重新创建一个Activity:
当用户按下了返回键,或者使用了finsh(),或者你的Activity很久没被使用又或者前台需要更多的资源,这都会使你的Activity销毁。当你的Activity在人为操作下销毁时,它的实例在内存就永久销毁了,而当Activity非人为销毁时,虽然实例销毁了但是内存依然会记得,而把它保存在一个Bundle对象的键值对中。这个Bundle对象通常情况下就是用来保存Activity的布局信息的。为了保存额外的有关activity状态的数据,需要重载onSaveInstanceState()回调方法,向Bundle对象中添加键-值对。当用户准备离开你的activity时系统将调用这个方法,并将它传递给Bundle对象以便你的activity意外销毁时可以被保存。因为onCreate()方法在创建一个新的实例以及重建一个先前的实例都会被调用,在你试图读一个Bundle之前你必须检查它的状态是否是null。如果它是null,那么系统将会创建一个新的activity实例,而不是重新载入之前被销毁的一个。
标签:
原文地址:http://www.cnblogs.com/lovelyYakir/p/5677561.html