Activity生命周期

Android四大核心组件之Activity的生命周期


摘要 :

Activity:作为一个App的"前台",主要负责展示应用界面。比如打电话、短信、QQ聊天、微信聊天等等;
Activity用于显示用户界面,用户通过Activity交互完成相关操作 , 一个App允许有多个Activity。

1、Activity的生命周期函数

2、Activity正常的生命周期

3、Activity异常的生命周期

4、Activity的四种状态

5、关于Activity生命周期的常见问题


Activity的生命周期函数

  1. onCreate:

     表示Activity正在被创建。在这函数中,可以做一些初始化工作,比如调用setContentVIew
     来加载界面布局资源,但是不建议做一些比较耗时的工作。
    
  2. onRestart:

     表示Activity正在重新启动。一般是Activity由不可见变成可见时出发此函数
    
  3. onStart:

     表示Activity正在被启动,即将开始。在这个过程中,Activity已经可见,只是还没有位于前台,
     能与用户进行交互
    
  4. onResume:

     表示Activity已经可见,并且位于前台,可以开始活动,且可与用户进行交互
    
  5. onPause:

     表示Activity正在暂停(停止),正常情况下,接下来会执行 onStop() 周期函数
    
  6. onStop:

     表示Activity即将停止,可以做一些轻量级资源回收释放工作,同时不建议做耗时操作
    

7.onDestory:

	表示Activity即将销毁,这是Activity的生命周期的最后一个函数,可以做一会回收工作和最终资源释放

Activity正常的生命周期

Activity生命周期_第1张图片


Activity异常的生命周期

Activity生命周期_第2张图片

  • 1、触发异常生命周期原因

    • 资源相关的系统配置发生改变导致Activity被销毁并重建
      • 比如横竖屏切换
    • 资源内存不足导致低优先级的Activity被回收销毁
  • 2、Activity优先级(高->低)

      - 可见且可交互的Activity
      - 可见但不可交互Activity
      - 位于后台的Activity
    
  • 3、触发异常生命周期过程简单分析:

      1. 当触发异常时,当前Activity会在onStop()之前调用onSaveInstanceState(Bundle outState),
      	 将当前页面的状态保存到 outState 中
      2. 发生异常的Activity重新创建,在onCreate(Bundle onSaveInstanceState)的onSaveInstanceState
      	 取出销毁前保存的状态,并进行状态恢复
      3. onSaveInstanceState会在Activity的onStop之前被调用	 
    

Activity的四种状态

  1. Active/Running:

     Activity处于活动状态,此时Activity处于栈顶,是可见状态,可与用户进行交互。 
    
  2. Paused:

     当Activity失去焦点时,或被一个新的非全屏的Activity,或被一个透明的Activity放置在栈顶时,
     Activity就转化为Paused状态
    
  3. Stopped:

     当一个Activity不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。
    
  4. Killed:

     当一个Activity从返回栈中移除后就变成了销毁状态。
    

关于Activity生命周期的常见问题

  • ActivityA跳转ActivityB后并返回ActivityA后的调用过程:
    Activity生命周期_第3张图片

      onCreateA>onStartA>onResumeA-->跳转ActivityB-->onPauseA
      >onCreateB>onStartB>onResumeB>onStopA-->返回ActivityA-->
      >onPauseB>onStartA>onResumeA>onStopB>onDestoryB
    
  • 当打开新的Activity或切换到桌面时:

    • 正常的新Activity: onPause>onStop
    • 透明主题的新Activity:onStop不会执行
    • 旧的Activity先onPause后,新的Activity才会启动,新的onResume后旧的Activity才会onStop
  • 当Activity被其他Activity(DialogActivity)覆盖或锁屏时,会调用onPause

  • 当Activity弹出一个Dialog时,onPause不会执行

  • activity是否可见来说,onStartonStop是配对的,

  • activity是否位于前台来说, onResumeonPause是配对的

你可能感兴趣的:(Activity生命周期,Activity,LifeCicle,Android,基础,Android四大核心组件,Android开发基础篇)