一、Activity基本概念
Activity是安卓开发中的重要组件,它为用户提供了基本的屏幕交互空间。简单来说,我们直观看到的应用可操作界面,其基础就是托管的activity。
一个应用通常由多个activity组成,一个activity可以启动另外一个acitvity,新的activity称为子activity,其父activity将会自动停止,并被压入stack,当子activity返回时,再从stack中弹出父activity。
二、Activity的生命周期
安卓官方文档有句话:开发一个强大和灵活的应用程序,实现Activity的回调方法来管理其生命周期尤为重要。
所以,弄清楚Acitvity的整个生命周期,是后期开发复杂应用的基础。
1.生命周期的控制
Activity完整的生命周期为从onCreate()到onDestroy()之间的所有过程,如下图:
Activity的生命周期主要由安卓系统托管。开发人员能控制的一般只有start(startActivity())与shut down(finish())Activity。
而其他的onXXX()方法,均是由安卓系统根据不同的外部状况来进行调用,开发人员不能直接参与控制。
也就是说,开发者并不能控制生命周期的转换,但是,我们可以通过回调方法onXXX()来控制应用在各个生命周期的表现。
所以,开发者需要了解:
2.生命周期在何时会发生变化 以及 我们能做什么
可见生存期和前台生存期似乎有点让人迷惑,具体是这样的:
activity可能处于三种基本的状态:
- Resumed
- activity在屏幕的前台并且拥有用户的焦点。(这个状态有时也被叫做“running”。)
- Paused
- 另一个activity在前台并拥有焦点,但是本activity还是可见的。 也就是说,另外一个activity覆盖在本activity的上面,并且那个activity是部分透明的或没有覆盖整个屏幕。 一个paused的activity是完全存活的(Activity 对象仍然保留在内存里,它保持着所有的状态和成员信息,并且保持与window manager的联接),但在系统内存严重不足的情况下它能被杀死。
- Stopped
- 本activity被其它的activity完全遮挡住了(本activity目前在后台)。 一个stopped的activity也仍然是存活的(Activity 对象仍然保留在内存中,它保持着所有的状态和成员信息,但是不再与window manager联接了)。 但是,对于用户而言它已经不再可见了,并且当其它地方需要内存时它将会被杀死。
如果activity被paused或stopped了,则系统可以从内存中删除它,通过请求finish(调用它的 finish() 方法)或者直接杀死它的进程。 当这个activity被再次启动时(在被finish或者kill后),它必须被完全重建。
原文:http://www.cnblogs.com/BulletEater/p/3993788.html