深入理解Activity的生命周期和启动模式

  • Activity的生命周期全面分析
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 异常情况下的生命周期分析
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    总结:
    1.系统只有在Activity异常终止的时候才会调用onSaveInstanceState和onRestoreInstanceState来存储和恢复数据,其他情况不会触发这个过程。
    2.当我们在onSaveInstanceState中存储一个字符串,然后当Activity被销毁并重新创建后,接收位置可以选择在onRestoreInstanceState或者onCreate,二者的区别是:onRestoreInstanceState一旦被调用,其参数Bundle savedInstanceState一定有值,而onCreate需要额外判空。
    3.如果不希望横竖屏切换时Activity被销毁重建,可以在AndroidManifest.xml文件设置Activity的android:configChanges=“orientation|keyboardHidden|screenSize”,当设置了该属性之后,系统会调用Activity的onConfigurationChanged方法。
    4.如果希望某一个界面一直处于竖屏或者横屏状态,不随手机的晃动而改变,同样可以在清单文件中通过设置Activity的参数来完成。
    竖屏: android:screenOrientation=“portrait”
    横屏: android:screenOrientation=“landscape”

在这里插入图片描述

  • Activity的启动模式
    四种启动模式就不一一介绍了。在这里插入图片描述

  • Activity的Flags
    在这里插入图片描述
    在这里插入图片描述

  • IntentFilter的匹配规则
    我们知道启动Activity分为两种,显示调用和隐式调用。**隐式调用需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息,如果不匹配将无法启动目标Activity。IntentFilter中的过滤信息有action、category、data。**另外一点,一个Activity中可以有多个intent-filter,一个Intent只要能匹配任何一组intent-filter既可以启动对应的Activity,如下所示:
    在这里插入图片描述

    Action的匹配规则:intent中的action必须存在且必须和过滤规则中的其中一个action相同。另外,action区分大小写,大小写不同字符串相同的action会匹配失败。
    Category的匹配规则:intent可以没有category,但是如果你一旦有category,不管有几个,每个都必须是过滤规则中已经定义的category。系统在调用startActivity或者startActivityForResult的时候会默认为Intent加上"android.intent.category.DEFAULT’这个category。所以如果过滤规则中有该category,那么intent中可以不用设置category
    Data的匹配规则:如果过滤规则中定义了data,那么Intent中必须也要定义可匹配的data。与action的匹配规则一样。

  • 扩展知识
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

发布了61 篇原创文章 · 获赞 0 · 访问量 868

猜你喜欢

转载自blog.csdn.net/qq_36828822/article/details/103942869