android中activity的生命周期

来源:互联网 发布:vs2017 windows.h 编辑:程序博客网 时间:2024/04/19 16:30

一:Activity生命周期图


二:运行中的应用程序分为五大类

前景模式: foreground process -是当前显示于手机屏幕上的应用程序画面,被定义为前景模式的进程,其中由onCreate()、onStart() 、onResume() 函数调用的Activity都会变成foreground process正在运行的Activity。

可见模式: visible process - 最常发生的情况是当应用程序弹出对话框要与用户交互时,原应用程序就会变成透明(不可见)的,而对话窗口就会变成前景。当对话窗口退出后,原应用程序马上就又变回原前景模式了。在Activity窗口画面变为透明时,就会由onPause()函数掌控进入暂停状态。当前景进程退出时,该Activity就会再度被拉到前景模式,由onResume() 函数唤醒。

背景模式: background process - 

是在Activity窗口画面被其他Activity完全盖掉,窗口画面已经完全看不见时,则会进入onStop()停止状态。

  这种情况通常发生在两个不同的应用程序开启时,后开启的应用程序会覆盖掉原应用程序。

  此时对background process Activity的处理有两种选择:一是直接被onDestroy()退出,该程序将完全关闭,无法再使用任何返回键回到该程序;另一个处理方式是当其他Activity需要内存时,这个background process会先被清除掉,释放出内存。

  如果使用者再度浏览刚刚被清除掉的background process,则Android系统会自动再运行onCreate()重新启动该Activity,所以当系统需要内存时,就会暂时将背景进程清除,让它变成empty process(空白模式) , 所以空白进程最重要的目的就是暂时释放出内存,直到使用者再度唤醒该empty process Activity时,才会将空白进程变成前景进程。

空白模式: empty process - 

服务模式: service process - 

是由startService()所产生的,虽然服务进程有点类似背景进程在背景状态运行,但是它的运行等级和前景进程几乎一样高。

  服务模式进程是持续运行的,虽然使用者看不到任何运行画面,Android系统不会自动关闭此类的服务进程,除非使用者自行关闭。这部分内容可在Service详解里面再讨论。

除了最后一个是service的事情。其余都与Activity相关

Android的整个生命周期是从第一次调用OnCreate(Bundle)到最后调用OnDestroy()。一个Activity在OnCreate()中建立所有的状态,在OnDestroy()中释放其所有的状态。

例如:一个运行在后台的进程去下载数据,那么它将在OnCreate()中被建立,从OnDestroy()中被销毁。

一个Activity可以从视觉上被看到发生在OnStart()和OnStop()之间,即使它并不是在Activity栈的栈顶,并且用户可能仅是只能看到他。

foreground lifetime是从OnResume()到OnPause()之间。此时该Activity位于栈顶。

Activity的所有的生命周期在如下的函数里定义:

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();

}


0 0