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的生命周期及各个阶段函数的作用。

Android的生命周期 android生命周期函数_Android的生命周期

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、各个运行转台的转换图

Android的生命周期 android生命周期函数_activity_02

希望这个图能让大家更加明白整个流程。

 其中,onSaveInstanceState()函数是用来保存当前activity的一些配置信息,如按钮的状态等,

同时我们在这里可以看到当内存不足,activity被kill掉的时候,会调用destroy函数。但是这个图的来源是百度得到的,所以上面提到的问题还是希望知道的朋友能够告诉我,谢谢。