Activity生命周期
activity生命周期图
1.onCreate()
当activity第一次创建时回调该方法,我们可以在这个方法中完成activity的初始化操作,比如说加载布局(通常会调用setContentView()和findViewById()),添加监听,绑定事件,完成全局变量的设置,开启下载线程。
2.onStart()
这个方法由不可见变为可见时调用,此时用户还不可见,可以在这个方法中完成广播注册的操作。
3.onResume()
这个方法在activity准备好和用户交互时调用,此时用户已经可见并且位于返回栈的栈顶,处于运行状态。此方法中不适合做一些耗时操作,容易引起ANR,影响用户体验。
注意
在onCreate()中我们需要配置一些必要的信息,但是并不是所有的事情都能在这里做。onCreate方法主要做这个activity启动时一些必要的初始化工作,onCreate方法调用完后,这个activity并不是说就已经启动了,或者是跳到前台了。而是还需要其他的大量工作,我们知道:onCreate之后还有onRestart()和onStart()等,实际上onStart()调用完毕了这个activity还没有完全启动,也只是前台可见,直到 onResume() 调用后这个onCreate才算终于启动。既然这样,那么在一个activity真正启动之前任何相当耗时的动作都会导致activity启动缓慢,特别是在onCreate里面耗时长的话可能导致极差的用户体验。
4.onPause()
这个方法系统在准备去启动或者回复另一个activity的时候调用,此时activity已失去焦点。我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据但是这个方法执行速度一定要快,不然会影响到新的栈顶活动的使用。
5.onStop
这个方法在activity完全不可见的时候调用。和onPause()方法的主要区别在于,如果启动的新activity是dialog或者是透明的activity,那么onPause()方法会得到执行,而onStop()方法不会被执行。可以做一些停止下载线程的操作。
6.onDestroy
这个方法在activity被销毁之前调用,之后activity的状态将变为销毁状态。通常做一些释放系统资源,解除广播的操作。
7.onRestart()
这个方法在activity由停止状态变为运行状态之前调用,也就是activity被重新启动了。
注意
activity生命周期中只有三个状态是静态的,这三个状态下activity可以存在一段比较长的时间。(其它几个状态会很快就切换掉,停留的时间比较短暂)Resumed:该状态下,activity处在前台,用户可以与它进行交互。(通常也被理解为"running" 状态)Paused:该状态下,activity的部分被另外一个activity所遮盖:另外的activity来到前台,但是半透明的,不会覆盖整个屏幕。被暂停的activity不再接受用户的输入且不再执行任何代码。Stopped:该状态下, activity完全被隐藏,对用户不可见。可以认为是在后台。当stopped, activity实例与它的所有状态信息(如成员变量等)都会被保留,但activity不能执行任何代码。其它状态 (Created与Started)都是短暂的,系统快速的执行那些回调函数并通过执行下一阶段的回调函数移动到下一个状态。也就是说,在系统调用onCreate(), 之后会迅速调用onStart(), 之后再迅速执行onResume()。以上就是基本的activity生命周期。