2018-03-18Android笔记之Activity生命周期

Android Activity生命周期

[if !supportLists]一.[endif]简介

activity是Android的四大组件之一,它提供了与用户交互的机能.

管理好Android Activity的生命周期,有例如下作用:

[if !supportLists]1.[endif]在布局改变时不会打断用户

[if !supportLists]2.[endif]在activity的切换过程中,用户数据不会丢失

[if !supportLists]3.[endif]使得程序在各个阶段都能被需要的情况控制

activity在它的运行过程中存在生命周期,跟人幼年青年中年老年类似,不同的阶段进行转换或者说过渡的,activity都是通过调用一些方法来实现的

下图是关于生命周期的官方解释图片:

 

2018-03-18Android笔记之Activity生命周期_第1张图片


每个阶段分别对应的方法如下:

onCreate();onStart();onResume();

onPause();onStop();onDestroy();

onRestart();


[if !supportLists]二.[endif]具体方法

[if !supportLists]1.[endif]onCreate():这个方法必须调用并且在里面需要进行初始化重要的组成部分,例如需要显示的交互界面setContentView();可以看到这个方法传递的参数是一个Bundle对象,并且有个解析这个对象的过程,这是个状态存储键值对对象,如果之前设置过(这就是一个这个程序上一次执行保存的数据),这是用来获取到Bundle里存放的数据,然后设置到界面,相当于恢复到上次退出的状态.


2018-03-18Android笔记之Activity生命周期_第2张图片


[if !supportLists]2.[endif]onStart():这个方法就是activity在可以进行交互之前,进行的最后准备,这个方法不应该停留很久,通常可以用来初始化有关UI的代码.


[if !supportLists]3.[endif]onResume():当准备工作做完,当前的activity与用户进行交互的时候,activity调用onResume(),此时,这个activity在activity栈的最上层(用户能看到的界面)并且能够获取到用户在屏幕上进行点击输入等等操作,而且大多数的app的核心代码在这里实现. 这个方法还可以用来恢复在系统onPause()重新返回当前界面的时候释放掉的资源,例如一个相机app,在打开摄像头的构成中返回,再返回过来.


2018-03-18Android笔记之Activity生命周期_第3张图片


[if !supportLists]4.[endif]onPause():这个阶段可以说是一个观望期,这个阶段可能是因为离开了这个界面,例如点击了home键,点击了顶部刚刚接受到的信息,这个阶段中需要释放资源,但不可以进行类似于访问网络/操作数据库等相关操作,这个阶段可能非常短暂,保存数据等等操作,更应该在onStop()里操作,接下来有可能会回到onResume(),也有可能会进行onStop();

有几种可能会到这个阶段:

[if !supportLists]1.[endif]返回

[if !supportLists]2.[endif]被应用程序打断

[if !supportLists]3.[endif]多视图的时候,只能有一个焦点,不能同时操作多个屏幕

[if !supportLists]4.[endif]一个半透明的activity出现了

进行资源的释放:


2018-03-18Android笔记之Activity生命周期_第4张图片

[if !supportLists]5.[endif]onStop():当activity完全不可见后,就调用这个方法,接下来后可能会进行onRestart()或者onDestroy(),在这个阶段,可以用来进行释放资源的操作,例如ui资源和一些会导致内存泄露的资源,在这个阶段还可以直接结束进程,就跳过了执行onDestroy()方法.当在onStop()中的操作都执行完毕后,activity对象就被保存在内存中,并且保持着所有状态和信息,但不会收到窗口管理,也就是不会显示到显示器,当执行onRestart()的时候,会把内存中这些信息重新自动部署到原来的状态,是不需要执行初始化操作的.

[if !supportLists]6.[endif]onRestart():当activity即将重新打开时,调用onRestart()方法,这个方法里存放了之前退出的数据,接下来就是重复从onResume()的操作了.

[if !supportLists]7.[endif]onDestroy():当activity彻底关掉的时候,调用这个方法,这个方法里需要确保的是所有activity的资源都已经被释放了,否则有可能出现内存泄漏.destroy有可能是被调用关闭也有可能是系统暂时关闭节约资源,当横竖屏幕改变的时候也会调用这个方法,但又迅速调用onCreate()方法.


[if !supportLists]三.[endif]示例

1.onCreate()->onStart()->onResume()


2018-03-18Android笔记之Activity生命周期_第5张图片


[if !supportLists]2.[endif]onResume()->onPause()->onStop()

onPause()与onStop()几乎是同时出现的,onPause()过程很短暂.


2018-03-18Android笔记之Activity生命周期_第6张图片


[if !supportLists]3.[endif]onRestart()->onStart()->onResume()

onStart()与onStop()几乎是同时出现的,onStart()过程很短暂.


2018-03-18Android笔记之Activity生命周期_第7张图片


[if !supportLists]4.[endif]onPause()->onStop()

此时可以看出在短信界面跳转出来的过程中,onPause()持续存在了一段时间,并且等短信界面完全覆盖后才出现了onStop(),所以onPause()可以说一个观望期


2018-03-18Android笔记之Activity生命周期_第8张图片


[if !supportLists]5.[endif]onDestroy()


2018-03-18Android笔记之Activity生命周期_第9张图片

你可能感兴趣的:(2018-03-18Android笔记之Activity生命周期)