欢迎来到天天文库
浏览记录
ID:29870963
大小:64.62 KB
页数:6页
时间:2018-12-24
《activity的生命周期》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Activity的生命周期 好好理解Activity的生命周期是非常重要的。可以确保你的应用程序给用户提供一个完美的用户体验并适当的管理资源。 和前面介绍Application一样,Application不能自己控制自己的进程生命周期,Android系统运行时会管理每一个应用程序的进程,包括在应用程序里面的所有Activity。 当运行时需要终止并管理一个Activity的进程,这个Activity的状态会决定它所在的父应用程序的优先级。接着,应用程序的优先级也会影响运行时,可能会终止该应用程序。 Activi
2、ty栈 每一个Activity的状态会决定它在Activity栈中的位置,按照先进后出的方式组织现在所运行的所有的Activity,当一个新Activity启动时,当前位于前台的屏幕的将会移动到栈顶,如果用户点击了退后按钮,或者这个前台的Activity关闭了,栈中的下一个Activity会移动上来,并且处于活动状态,下图说明了这个过程: 根据前面的说明,应用程序的优先级取决于它包含的最高优先级的Activity,当Android的内存管理决定终止哪一个Application以释放资源,也是使用这个栈决定建立在这些A
3、ctivity上面的应用程序的优先级。 Activity状态 一个Activity从建立到销毁也就是移入到移出栈,这个过程通常可能包含以下四个状态:1、Active获得状态,当一个Activity位于栈顶并显示在前台,等待获得用户输入命令,Android系统会尝试付出所有可能的资源保证它的运行,必要时会杀死一些在栈中位于比较靠后的一些Activity,以确保它需要的资源,当另外一个Activity变成Active状态,那么这个将会进入暂停状态。 2、Paused暂停状态,有些情况下,你的应用程序会可见,但是不是获得用户输
4、入的焦点,这种情况就是进入了暂停状态,出现这种状态也是是有一个半透明的或者不是全屏的Activity在它前面处于获得状态,当进入暂停状态,它会和处于获得状态一样对待,只是它不能获得用户的输入而已。只有在极端的情况下,Android会为了当前活动的Activity杀死一个暂停的Activity以释放资源,当一个Activity变得完全不可见,那么它就进入停止状态了。 3、Stopped停止状态,当一个Activity不可见了,那么它就进入停止状态了,这个Activity依然会在内存中,保存所有的信息状态,然而,它现在已经是在等候
5、系统的终止了,只要系统其他任何情况需要内存的时候。当一个Activity终止时,最重要的是要保存数据和当前的UI状态,当一个Activity已经退出或者关闭时,那么它就进入不活动状态了。 4、Inactive不活动状态,当一个Activity已经给杀死了,在它再次启动前,它是不活动的状态,不活动的Activity是已经从Activity中移除的,当它再次需要展示或者使用时,是需要从新开始的。 状态的改变是不确定的,并完全由Android的内存管理器确定的,Android会先关闭包含不活动的Activity的应用程序,接着是已经
6、停止的,极端情况下是移除暂停的。 为了确保提供完美的用户体验,在状态切换的时候对用户而言是不可见的,状态切换到暂停,停止,或者不活动状态,对用户而言是没有说明不同的,最重要的是当Activity进入暂停或者停止状态时要保存UI的状态和数据,当Activity再次变成活动状态可以重新加载已保存的数据。 监听状态的改变 为了能作用于Activity状态的改变,Android提供了一系列的事件控件,当Activity切换所有的状态时都会启动这些对应的事件,包括这个生命周期,可见周期,活动周期等,下图描述了Activity的整个状
7、态的变换。 下面Activity实现了上面说提到的所有的事件。 packagecom.example.activitylifetime; importandroid.os.Bundle;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.AlertDialog.Builder;importandroid.content.Intent;importandroid.util.Log;importandroid.view.Menu;
8、importandroid.view.View;importandroid.widget.Button;importandroid.widget.CheckBox;importandroid.widget.Toast; publicclassMainActivityexten
此文档下载收益归作者所有