闲着没事写一篇Activity生命周期的文章,很多刚接触安卓安卓的人可能对这个生命周期不是太熟悉

借用网上的一张图很多人可能已经百度过了

Android pendingintent 打开service_安卓生命周期

当我们启动一个Activity的时候 执行的方法是onCreate()     onStart()       onResume()



Activity有三种状态

1.当他在屏幕前台时,响应用户操作的Activity,它是激活运行状态

2.当它上面有另外一个Activity 使他失去焦点但对用户仍然可见的 处于暂停状态

3.当他完全被另外一个Activity覆盖时处于停止状态

我们分别介绍一下生命周期的方法

onCreat()方法:创建的时候调用  设置布局 进行数据初始化操作

onStart()方法:接着调用此方法  此时的是可见的但是不可交互

onRestart()方法这个方法是调用onRestart使用的

onResume()方法:最后调用此方法 此时的Activity是可见可以交互的  此方法在打开Activity的时候只执行一次 并且最后执行

onPause()方法:部分可见部分不可见

onStop()方法:完全不可见

onDestory()方法:销毁



a.当startActivity开启一个新的Activity时 这个新的Activity执行的生命周期是onCreat() onStart(可见不可交互) onResume(可见可交互)

b.点击back键关闭一个Activity时 此Activity执行的生命周期是onPause(部分可见部分不可见) onStop(完全不可见) onDestory(销毁)

c.当开启一个新的Activity时(以对话框的形式)新的Activity盖住下面的Activity一部分时 下面的Activity执行的生命周期是onPause(部分可见部分不可见)

d.当把新开启的Activity(对话框形式的Activity)关闭时 下面的Activity执行的生命周期是onResume(可见可交互)

e.当新开启一个Activity把后面的Activity完全盖住时  后面的Activity执行的方法是 onPause() onStop()

f.当把新开启的Activity关闭时 后面的Activity执行的生命周期是onRestart() onStart() onResume()



实际工作中常用的方法以及应用场景

onResume() 可见可交互 把动态刷新的的操作启动

onPause()部分可见部分不可见把动态刷新的数据暂停

onCreat()初始化一些大数据

onDestroy()清理数据 释放内存




2.Activity的启动模式

1)standard(安卓默认的启动模式) 每次跳转都会生成一个Activity 并且存放于栈结构的顶部  不管有没有Activity的实例  都会生成新的Activity

2)singleTop 如果是这么模式启动的话  如果发现有对应的Activity实例位于栈顶 则重复利用不再生成新的实例 如果不是位于栈顶 还是会生成新的Activity实例

3)singleTask  如果发现有此Activity的实例 则把此实例之上的其他Activity统统出栈  使此Activity成为栈顶对象 显示到幕前

4)singleInstance 启用一个新的栈结构将这个Activity放到这个新的栈结构中 不再有其他的Activity进入其中