先给各位拜个年,祝各位新年快乐,马年行大运!

本期那点破事来聊聊Activity的生命周期。

众所周知,生命周期这个东西非常重要,比如servlet的生命周期包括init,service(doPost/doGet/...),destroy。这个生命周期就诠释了整个servlet的一个调用过程,同样的,在Android中activity也是有生命周期的。

先看个官方的android activity生命周期金字塔图:

android组件生命周期 android app生命周期_生命周期


从图中可以看出,其中有几个状态以及怎样从开始到达金字塔顶端,即resumed状态;怎样从金字塔顶到最后的销毁过程。你不需要全部实现这里面的方法,但是有几个重要的你必须要实现,这样才能保证你的app正确的运行。虽然不实现,但是你必须保证:

1、在用户手机接收到电话或者切换到别的app时,app不要奔溃。

2、没有必要时,不要消耗宝贵的系统资源。

3、当用户离开你的app后,一段时间后回到你的app,尽量保持原始的状态。

4、当用户旋转手机方向时,app不能奔溃,或者丢失当前的用户信息。


这些状态当中,不是所有的都是静态的。只有这3个是:


Resumed状态: 也可以成为running状态,此时activity是在最前面,用户可以与其交互。



Paused状态:此时activity是停止状态,被其他的resumed的activity所覆盖着。在这种状态下,活动部分被另一个—其他活动的前景是半透明或不覆盖整个屏幕。暂停活动不接受用户输入并不能执行任何代码。

Stopped状态:在这种状态下,该活动是完全隐藏的,对用户不可见的,它被认为是在后台。停止时,活动实例及其所有成员变量保留等状态信息,但不能执行任何代码。

其他状态(创建并启动)是系统通过调用下一个生命周期回调方法迅速转移到下一个状态。即,系统调用onCreate()后,它迅速调用onStart(),紧接着onResume()。


是不是很简单,其实就这点破事。

好了今天这个破事就到这里,其实android开发就这么点破事。