注:如果文本出现不能自动换行现象,请将游览器调成兼容模式
概述
Android应用中的最重要组件单位之一,是Android应用中负责与用户交互的组件,通俗来讲就是代表一个界面。
Activity的生命周期
四种状态
运行状态:当前Acitivity位于前台,用户可见,可以获得焦点 暂停状态:其他Acitivity位于前台,该Activity依然可见,只是不能得到焦点 停止状态:该Acitivity不可见,失去焦点。 销毁状态:该Acitivity结束,或Activity所在的进程被结束
生命周期回调方法
onCreate():当Acitivity第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。 onStart(): 该方法的触发表示所属Activity将被展现给用户,但不可交互。 onRestart(): 当处于停止状态的Activity需要再次展现给用户的时候,触发该方法。 onResume(): 所属Activity变成可交互时回调此方法。 onPause(): 当一个正在前台运行的Activity因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。 onStop(): 当一个Activity不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发 onStop()方法。 所以保存状态信息是应该在onPause()时做,而不是onStop()时做。活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时候,必须时刻牢记这一原则。在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。 onDestroy(): 当活动销毁的时候,触发该方法。和onStop()方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。
操作Activity时状态流程
启动一个Acitivity到运行状态中回调的方法onCreate()—OnStart()—onResume()
运行状态到暂停状态回调的方法
onPause()
暂停状态到运行状态回调的方法
onResume()
运行状态到停止状态回调的方法
onResume()—onPause()— onStop()
停止状态到运行状态回调的方法
onRestart()—onStart()— onResume()
运行状态到结束这个Activity回调的方法
onPause()—onStop()— onDestroy()
Activity的加载模式
standard: 标准的加载模式,默认的加载模式。
每次通过这种方式来启动一个Acitivity时,Android总会为目标创建一个新的实例,并将该Activity添加到当前的Task栈中。这种模式不会启动新的Task,新Activity将被添加到原有的Task中
singleTop:Task栈顶的单例模式。
当要创建的Activity不存在,Activity会创建一个新的Activity,并添加到Task栈顶中 当要创建的Activity存在,如果此Activity位于Task栈顶,此Activity不会创建一个新的实例,而是复用以这个Activity。 当要创建的Activity存在,如果此Activity不是位于Task栈顶,此Activity将会创建一个新的实例,并添加到Task栈中,之前创建的Activity还会有。
singleTask:Task内的单例模式
当要创建的Activity不存在,Activity会创建一个新的Activity,并添加到Task栈中 当要创建的Activity存在,如果此Activity位于Task栈顶,此Activity不会创建一个新的实例,而是复用以这个Activity。 当要创建的Activity存在,如果此Activity没有位于Task栈顶,那么系统将会将此Activity移除Task栈中,并将目标Activity转到Task栈顶,从而复用这个Activity。
singleInstance: 全局单例模式
当要创建的Activity不存在,系统会先创建一个新的Task栈,只用来存放此Task栈,在创建一个Activity实例,并将此Activity添加到新的Task栈中。 当要创建的Activity存在,无论它位于哪个应用程序中、位于哪个Task中,系统都会把该Activity的Task转到前台,从而使Activity显示出来。