1、首先来看看activity的由来:
activity继承自ApplicationContext,并定义了一些方法如下:
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void OnRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
2、现在来讲解单个activity的生命周期及各个阶段函数的作用。
1、onCreate函数:如右图当Activity首次被加载或者Activity被销毁后(onStop后),便会调用onCreate函数。主要是做一些初始化的工作,如通过findViewById获取对应的控件和相应的监听事件。
2、onStart函数:执行完onCreate函数后,接下俩便是onStart函数的调用;还有一种情况就是当activity已经被执行了onStop函数后(窗体和进程没有被销毁),会调用onRestart和onStart函数,进入可视状态。
3、onResume函数:这个函数就是就是将activity位于栈顶,用户便可以与之交互,对界面进行操作了,进入可操作状态。
4、onPause函数:当调用另外一个activity或者当前的activity失去焦点的时候调用onpause函数。当前的activity依然可见,但是不能对其进行操作,进入不可操作但是可视状态,可回收。
5、onstop函数:当前的activity如果完全不可见了,便会调用onstop函数,进入不可视状态,可回收。
6、onDestroy函数:当activity被系统回收掉或者主动finish掉,便会调用ondestroy进行销毁。
3、activity的三个基本状态
1、激活状态或者可操作状态:在这个状态下activity呈现在用户面前,用户可以对它进行操作,比如点击按钮等等。
2、暂停状态:这个时候activity依然可见,但是失去了焦点。如应用程序退出的时候弹出那个提示框(焦点所在),activity的界面做了背景(不能操作)。
3、停止状态:这是活动完全被其他的activity遮盖,用户不可见了。但它任然保留所有的状态和成员信息。
注意:在暂停和停止状态的时候,当内存非常低的时候可能会将这个activity杀掉。
4、对activity四种情况下的响应流程
1、返回键:进入activity onCreate->onStart->onResume ->按了返回键->onPause->onStop->onDestroy.
2、启动程序进入activity,按home键进入桌面,然后长按home键点击该activity重新进入这个activity。
onCreate->onStart->onResume->按了home键->onPause->onStop->重新进入activity->onRestart->onStart->onResume.
3、启动程序,进入activity,然后按挂机键,进入锁屏,然后按挂机键重新进入activity。
onCreate->onStart->onResume ->按了挂机键->onPause->按了挂机键->onResume.
4、两个activity A和B,B采用dialog来作为界面,属性如下:android:style/ Theme.Dialog,A跳转到B,再从B跳转到A。流程如下:
onCreate->onStart->onResume ->进入activity2->onPause->退回到activity1->onResume.
5、打开程序,启动activity,点击按钮弹出alertDialog对话框,按返回键。
onCreate->onStart->onResume---------alertDialog是activity本身的一部分,对activity的生命周期没有影响。
6、当activity处于可回收状态时(onpause,onstop),系统由于内存不足,系统杀死该activity,程序就异常退出,
在这里就有个问题给大家一起讨论下,从onstop()到ondestroy()的条件是finish()掉或者系统回收activity。当内存不足的时候会kill掉这个activity,这两个方式有什么不同??第二种方式是否会继续调用下面的函数如ondestroy()呢?两种方式分别在什么时候释放资源呢?知道请和我一起交流下.....
5、各个运行转台的转换图
希望这个图能让大家更加明白整个流程。
其中,onSaveInstanceState()函数是用来保存当前activity的一些配置信息,如按钮的状态等,
同时我们在这里可以看到当内存不足,activity被kill掉的时候,会调用destroy函数。但是这个图的来源是百度得到的,所以上面提到的问题还是希望知道的朋友能够告诉我,谢谢。