android四大组件之activity(生命周期及状态)
activity是一个单一的、集中,用户可以做的事情。几乎所有的activity与用户交互,所以activity类负责创建一个窗口,你可以将你的UI setContentView(视图)。虽然activity往往是向用户提供全屏窗口,也可以用在其他方面:浮动窗口(通过一个主题windowIsFloatingset)或嵌入到另一个activity(使用ActivityGroup)。有两个方法,几乎所有的子类activity将实现:
onCreate(包)就是你初始化activity。这里最重要的是,你通常会叫setContentView(int)布局资源定义UI,并使用findViewById(int)来检索该UI小部件,您需要以编程的方式进行交互。
onPause()你就是处理用户离开你的activity。最重要的是,用户所做的任何更改在这一点上应该承诺(通常ContentProvider控股数据)。
与Context.startActivity使用(),所有activity的类必须有一个相应的包的AndroidManifest.xml <activity>声明。
activity类是应用程序的一个重要组成部分的整体生命周期,和activity的启动方式,整合是一项基本平台的应用程序模型的一部分。我们先谈谈activity的生命周期.在android官网的API中他们用这幅图来像我们展示activity的生命周期.即简单又明了。
onCreate(包)就是你初始化activity。这里最重要的是,你通常会叫setContentView(int)布局资源定义UI,并使用findViewById(int)来检索该UI小部件,您需要以编程的方式进行交互。
onPause()你就是处理用户离开你的activity。最重要的是,用户所做的任何更改在这一点上应该承诺(通常ContentProvider控股数据)。
与Context.startActivity使用(),所有activity的类必须有一个相应的包的AndroidManifest.xml <activity>声明。
activity类是应用程序的一个重要组成部分的整体生命周期,和activity的启动方式,整合是一项基本平台的应用程序模型的一部分。我们先谈谈activity的生命周期.在android官网的API中他们用这幅图来像我们展示activity的生命周期.即简单又明了。
在这幅图中我们可以看它向我们展示了activity的几种状态转换的方法和实现。说到状态,activity有4中状态,分别是:
1Active/Runing
一个新 Activity 启动入栈后,它显示在屏幕最前端,处理是处于栈的最顶端(Activity栈顶),此时它处于可见并可和用户交互的激活状态,叫做活动状态或者运行状态(active or running)。
2. Paused
当 Activity失去焦点, 被一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶,此时的状态叫做暂停状态(Paused)。此时它依然与窗口管理器保持连接,Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被强行终止掉。所以它仍然可见,但已经失去了焦点故不可与用户进行交互。
3. Stoped
如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被强行终止掉。
4. Killed
如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接终止它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。
一个新 Activity 启动入栈后,它显示在屏幕最前端,处理是处于栈的最顶端(Activity栈顶),此时它处于可见并可和用户交互的激活状态,叫做活动状态或者运行状态(active or running)。
2. Paused
当 Activity失去焦点, 被一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶,此时的状态叫做暂停状态(Paused)。此时它依然与窗口管理器保持连接,Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被强行终止掉。所以它仍然可见,但已经失去了焦点故不可与用户进行交互。
3. Stoped
如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被强行终止掉。
4. Killed
如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接终止它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。
我们可以在途中看到(1)就是Active/Runing状态,(2)(4)就是 Paused状态,(3)(5)就是Stoped状态,(6)就是Killed状态。有很多人或许很奇怪,他们都知道(4)(5)转换方式的实现,但是(2)(3)却没有碰到过.(2)(3)这2中情况一般很少出现,但是也是存在的。在android官网的API中是这么介绍activity生命周期的7中方法的:
我们可以看到有三个方法的killable属性被标记为了yes。标记为yes说明当手机的内存不够的时候。android系统会去自动destroy掉在这三种状态下的activity(应用),从而来达到释放内存的效果。