Android生命周期

指安卓从开始到结束的整个过程

Android系统进程优先级,从高到低分别为:

android 根据条件排序 android顺序_生命周期

1.前台进程:

  • 进程中的activity正在与用户进行交互
  • 进程中的组件被前台进程调用或者正在执行生命周期中的回调函数,如onCreate()等

2.可见进程:

  • 进程的界面能被用户看见但不与与用户交互
  • 进程中的组件被可见进程调用

3.服务进程:

  • 进程包含已启动的服务

4.后台进程:

  • 进程不包含任何已启动的服务,而且没有任何用户可见的Activity

5.空进程:

  • 进程不包含任何活跃的组件

优先级决定与变化规则:

1.进程的优先级取决于进程的所有组件中的优先级最高的部分

2。进程的优先级会根据与其他进程的依赖关系而变化

Android组件

四大组件:

Activity

  • Activity:

Android程序的呈现呈,显示可视化的用户界面,并接收与与用户交互所产生的界面事件

Android应用程序可以包含一个或多个Activity,一般需要指定一个程序启动时显示的Activity

  • BroadcastReceiver

用来接收并响应广播消息的组件,不包含任何用户界面,可以通过启动Activity或者Notification通知用户接收重要的信息

  • Service

Service一般用于没有用户界面,但需要长时间在后台运行的应用

可公开Service程序接口,供其他程序调用

  • ContentProvider

Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他程序的私有数据

Android系统内部也提供了一些内置的ContentProvider,就能够为应用程序提供重要的数据信息

组件生命周期:所有Android组件都有自己的生命周期,组件的生命周期是从组件建立到组件销毁的整个过程

在生命周期中,组件会在可见、不可见、活动、非活动等状态中不断变化

 

Activity生命周期

activity生命周期是指Activity从启动到销毁的过程,整个生命周期Activity表现出四种状态

  • 活动状态:activity位于界面最上层,完全能被用户看到,能够与用户进行交互
  • 暂停状态:activity在界面上被部分遮挡,不位于界面最上层,且无法与用户进行交互
  • 停止状态:activity被其他activity全部遮挡,在界面上完全不能被用户看到
  • 非活动状态:activity被用户关闭或被系统终止后则处于非活动状态

Activity四种状态的变换关系图:

android 根据条件排序 android顺序_生命周期_02

通过栈对activity进行管理

Activity栈

遵循“后进先出”的规则

android 根据条件排序 android顺序_android 根据条件排序_03

随着Activity自身状态的变化,Android系统会调用不同的事件回调函数

Activity的主要事件回调函数:
 

public class HelloActivity extends Activity{
    // 当Activity被第首次加载时执行,新启动一个程序的时候其主窗体的onCreate事件就会被执行
    protected void onCreate(Bundle savedInstanceState);    //初始化数据、view、恢复等
    // activity变为在屏幕上对用户可见时调用
    protected void onStart();    
    // 界面可视化后用户与界面进行交互,此时activity进入了活动状态
    protected void onResume();
    // activity从活动状态变成暂停状态
    protected void onPause();
    // activity进入停止状态
    protected void onStop();
    // activity从停止状态回到活动状态
    protected void onRestart();
    // activity结束生命周期,进入非活动状态
    protected void onDestroy();
}

android 根据条件排序 android顺序_生命周期_04

 

  • onSaveInstanceState()和onRestoreInstanceState()    注:不是生命周期的事件回调函数

onSaveInstanceState()在停止activity前被调用,会将界面临时信息保存在Bundle中,可以用onCreate和onRestoreInstanceState()恢复保存的信息,一般使用onCreate()恢复,有些特殊情况下只能使用onRestoreInstanceState()函数恢复,例如:必须在界面完全初始化完毕后才能进行的操作

  • onPause()和onSaveInstanceState(),这两个函数都可以用来保存界面信息

onPause()一般用于数据保存在文件或者数据库中,保存持久化数据

onSaveInstanceState()主要用来保存一些临时信息,一般保存在Bundel中

Activity的生命周期可分为全生命周期、可视生命周期和活动生命周期

Activity事件回调函数的调用顺序:

android 根据条件排序 android顺序_android 根据条件排序_05

在MainActivity中覆写8个生命周期函数,实现以上的过程。