Activity 生命周期
一.简介
activity是Android的四大组件之一,它提供了与用户交互的机能.
管理好Android Activity的生命周期,有例如下作用:
1.在布局改变时不会打断用户
2.在activity的切换过程中,用户数据不会丢失
3.使得程序在各个阶段都能被需要的情况控制
activity在它的运行过程中存在生命周期,跟人幼年青年中年老年类似,不同的阶段进行转换或者说过渡的,activity都是通过调用一些方法来实现的
下图是关于生命周期的官方解释图片:
每个阶段分别对应的方法如下:
onCreate();onStart();onResume();onPause();onStop();onDestroy();onRestart();
二.具体方法
1.onCreate():这个方法必须调用并且在里面需要进行初始化重要的组成部分,例如需要显示的交互界面setContentView();可以看到这个方法传递的参数是一个Bundle对象,并且有个解析这个对象的过程,这是个状态存储键值对对象,如果之前设置过(这就是一个这个程序上一次执行保存的数据),这是用来获取到Bundle里存放的数据,然后设置到界面,相当于恢复到上次退出的状态.
2.onStart():这个方法就是activity在可以进行交互之前,进行的最后准备,这个方法不应该停留很久,通常可以用来初始化有关UI的代码.
3.onResume():当准备工作做完,当前的activity与用户进行交互的时候,activity调用onResume(),此时,这个activity在activity栈的最上层(用户能看到的界面)并且能够获取到用户在屏幕上进行点击输入等等操作,而且大多数的app的核心代码在这里实现. 这个方法还可以用来恢复在系统onPause()重新返回当前界面的时候释放掉的资源,例如一个相机app,在打开摄像头的构成中返回,再返回过来.
有几种可能会到这个阶段:
1.返回
2.被应用程序打断
3.多视图的时候,只能有一个焦点,不能同时操作多个屏幕
4.一个半透明的activity出现了
进行资源的释放:
5.onStop():当activity完全不可见后,就调用这个方法,接下来后可能会进行onRestart()或者onDestroy(),在这个阶段,可以用来进行释放资源的操作,例如ui资源和一些会导致内存泄露的资源,在这个阶段还可以直接结束进程,就跳过了执行onDestroy()方法.当在onStop()中的操作都执行完毕后,activity对象就被保存在内存中,并且保持着所有状态和信息,但不会收到窗口管理,也就是不会显示到显示器,当执行onRestart()的时候,会把内存中这些信息重新自动部署到原来的状态,是不需要执行初始化操作的.
6.onRestart():当activity即将重新打开时,调用onRestart()方法,这个方法里存放了之前退出的数据,接下来就是重复从onResume()的操作了.
7.onDestroy():当activity彻底关掉的时候,调用这个方法,这个方法里需要确保的是所有activity的资源都已经被释放了,否则有可能出现内存泄漏.destroy有可能是被调用关闭也有可能是系统暂时关闭节约资源,当横竖屏幕改变的时候也会调用这个方法,但又迅速调用onCreate()方法.
三.示例
1.onCreate()->onStart()->onResume()
2.onResume()->onPause()->onStop(). onPause()与onStop()几乎是同时出现的,onPause()过程很短暂.
3.onRestart()->onStart()->onResume(). onStart()与onStop()几乎是同时出现的,onStart()过程很短暂.
4.onPause()->onStop(). 此时可以看出在短信界面跳转出来的过程中,onPause()持续存在了一段时间,并且等短信界面完全覆盖后才出现了onStop(),所以onPause()可以说一个观望期
5.onDestroy()