Activity 继承 android.content.context, 它是单独的与用户交互的界面。所以对于Activity 的生命周期应该有所了解。这样才能更加准确的把握程序中的各个控件之间的关系。今天要写一个关于录音器的小程序, 对于它周期的七个函数有些应用,所以记录一下。
这张googleAPI 上的原图大家都看过,结合这个说一下。
onCreate(),
Activity第一次创建的时候调用,或者这个Activity被销毁之后再次启动,它通过setContentView(int id)来确定我们的UI。还可以做一些UI初始化的工作,比如我们做录音器是可以在这里面录音器初始化,并初始化一个线程。在这个步骤中activity并没有呈现在用户面前,也就是它并不在最前端。它之后是onReStart()和onStart().
onStart () , 这个时候activity已经呈现在用户面前。如果这不是activity第一次启动,而是已经stop过了。那么会先调用onReStart()然后在调用这个函数。如果程序中应用到广播,可以在这里注册广播。它之后是onResume().
onResume() ,到这一步activity就可以与用户交互了。这个时候activity已经到了栈的最前端,用户可以操作界面上的widget。所以当一个activity打开时它会一直执行以上顺序到这里为止 。之后是onPause().在这里可以让初始化的线程开始run,做它应该做的操作。
onPause(), 当activity不是最上层时但是这个activity并没有完全看不到,调用此函数,比如在这个activity的情况下弹出一个Dialog,这个Dialog并没有完全覆盖activity。此时调用这个函数。这时候可以让线程暂停运行。到这虽然还能看到activity,但是这个activity已经是可以被杀死的了。如果系统内存不够需要释放内存时,它是有可能被杀死的。它之后是onstop().
onStop() 当用户完全看不到activity时,调用此函数,比如直接按HOME键。这个时候如果有需要保存的数据,在这里就可以保存了,以便重启这个activity时拿到相应的数据,注册的广播也可以在这里取消,此时activity虽然停止但是并没有被杀死,它仍然在activity栈里面,如果在被杀死之前用户重新回到了这个activity,这个时候会调用onReStart()->onStart()->onResume(). 但是如果一直不再回来,有可能被清除,这个时候就要调用onDestroy().
onDestroy(),这是activity被撤销前能调用的最后一个函数了。 在这里释放一些资源。
所以我们可以总结出,一个activity的生存周期是onCreate() -> onDestroy(), 但是可视周期是onStart() -> onStop(), 而在最前端的周期是onResume() -> onPause(). 而从onPause() -> onDestroy() 这个activity是可能被注销的。
这就是一个一个小菜鸟所理解的activity的前世今生。如果有不正确之处请大家指出。谢谢。