Android开发学习-Activity生命周期

Android是使用任务(Task)来管理活动,一个任务就是一组存放在栈的活动的集合,这个栈也成为返回栈(Back Stack)。默认情况下,启动一个任务便会入栈且处于栈顶,当按下back键或调用finish()方法时会销毁任务且将活动出栈。而系统总会显示栈顶活动给用户。


Activity一般意义上有四种状态:

1、运行状态:活动处于返回栈栈顶。系统不会回收其资源

2、暂停状态:活动不处于栈顶但仍可见。系统一般不会回收其资源

3、停止状态:活动不处于栈顶且不可见。系统可能回收其资源

4、销毁状态:不处于返回栈。系统一般会回收其资源


Activity的7个回调方法:

onCreate():在活动第一次创建时调用

onStart():在活动由不可见变为可见的时候调用

onResume():在活动准备好和用户进行交互的时候调用

onPause():在系统准备去启动或恢复另一个活动的时候调用

onStop():在活动不可见的时候调用

onDestroy():在活动销毁时调用

onRestart():在活动由停止状态变为运行状态前调用


onPause()和onStop():如果启动的新活动时一个对话框式的活动则执行onPause()而不会执行onStop()


需要注意以下几点:

1、Activity实例是由系统自动创建,并在不同的状态期间回调相应的方法。一个完整的Activity生命周期会按如下顺序回调:onCreate()-->onStart()-->onResume()-->onPause()-->onStop()-->onDestroy()。称为entire lifetime

2、当执行onStart()时,Activity开始被用户可见(onCreate()执行时,活动不可见)onStart()到onStop()用户是可见的。称为visible lifetime

3、onResume()到onPause()活动是可以和用户进行交互的。称为foreground lifetime

Android开发学习-Activity生命周期

Activity启动模式:

standard:每次启动都会打开新的实例

singleTop:若要启动的activity处于栈顶,则不再新建实例

singleTask:若要启动的activity在Task已存在,则不再新建实例

singleInstance:若要启动的activity已存在,则不再新建实例