Activity详细解读

  1. 典型情况下生命周期分析:
    onCreate(): 表示Activity正在被创建,这是生命周期的第一个方法,在这个方法里可以做一些初始化的操作,比如setContentView去加载界面布局等。
    onRestart():当前Activity由不可见到可见状态会回调,这种情形一般是用户行为,比如,用户按下HOME键然后又切换到这个Activity。
    onStart(): 表示Activity正在被启动,这时候Activity还没有被显示出来,没办法和用户交互。
    onResume(): 表示当前Activity已经出现在前台并开始活动。
    onPause()::当前Activity正在停止,注意不能进行耗时操作。
    onStop():表示Activity即将停止,可以做一些轻量级的回收工作,同样注意不能耗时。
    onDestroy():Activity即将被销毁,这是生命周期的最后一个回调,可以做一些回收工作和最终的资源释放。

    正常情况下Activity的生命周期只有上面7种,下图描述了Activity的切换过程。
    Activity生命周期以及启动模式(一)

  2. 异常情况下Activity生命周期分析
    默认情况下,如果Activity不做处理,那么当系统配置发生改变后,Activity就会被销毁并且重建
    Activity->意外情况->onSaveInstanceState->onPause->onStop->onDestory
    当Activity重新创建时:
    onCreate->onRestoreInstanceState
    由于Activity被异常终止,系统会回调onSaveInstanceState来保存当前Activity的状态,这个调用只出现在Activity被异常终止的时候,正常销毁不会调用

    同时,加入onConfigChanges 属性可以避免不必要的重建。

  3. Activity的四种启动模式分析
    standard,singleTop,singleTask,singleInstance

    1.standard:默认模式,每次启动Activity都会重新创建一个实例,不管Activity是否存在
    

    标准模式的Activity默认会进入启动它的Activity的栈中。所以当使用ApplicationContext去启动stander模式的Activity会有问题(ApplicationContext非Activity类型),所以此时要为启动的Activity指定 FLAG_ACTIVITY_NEW_TASK标志位,这时启动的时候就会创建一个任务栈,实际上这种模式可以理解为singleTask。

    2.singleTop:栈顶复用模式,如果新Activity已经位于栈顶,那么此Activity不会别创建
    

    如果新的Activity没有在栈顶,那么依然会被创建。

    3.singleTask:栈内复用模式,只要Activity在栈内存在,多次启动都不会重新创建该Activity。
    

    注意singleTask默认具有clearTop的效果

    4.singleInstance:加强版singleTask,具有此种模式的Activity只能单独的位于一个任务栈 
    

    当要启动的Activity具有此种模式,系统会为其创建一个新的任务栈,此Activity单独运行在这个任务栈中,由于栈内复用的特征,后续的请求均不会创建新的Activity,除非这个任务栈被系统销毁了。

相关文章:

  • 2021-04-23
  • 2018-03-04
  • 2021-05-25
  • 2021-04-19
  • 2021-11-26
猜你喜欢
  • 2022-03-02
  • 2021-05-11
  • 2021-07-11
  • 2021-11-02
  • 2021-12-19
  • 2021-05-12
相关资源
相似解决方案