Activity的Launch Mode的理解以及相对应的生命周期的运行

2024-06-12 00:08

本文主要是介绍Activity的Launch Mode的理解以及相对应的生命周期的运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      Activity的Launche Mode有四种:

        1、SingleTop 

        2、 SingleTask 

        3、SingleInstance

        4、Standard;

       该模式的设置是在ManiFest文件的<Activity>的属性设置的。

       接下来就分析各个的效果以及生命周期的运行情况。

        SingleTop

    理解:

        如果一个Activity的LaunchMode为singleTop的话,重新显示该Activity的时候会检查该Activity是否位于栈顶,如果是,则不需要重新创建该Activity,而是调用OnNewIntent()复用之前的Activity;如果没有位于栈顶的话,则不会调用OnNewIntent(),而是创建新的Activity。

      生命周期:

       如果位于栈顶:不会调用OnCreate(),而是调用OnNewIntent()----->OnResume();

       如果没有位于栈顶:会重新创建Activity,生命周期如下:OnCreate()-------OnResume();

    SingleTask

      理解:

      如果一个Activity的LaunchMode为singleTask的话,当一个Activity跳转到该Activity的话,系统会检查是否有该Activity的实例,如果没有的话,会创建一个新的;如果有的话,会先清空栈中该Activity之上的所有Activity,然后调用OnNewIntent()方法,复用之前已经创建的实例。

      生命周期:

       已经创建:不会调用OnCreate(),而是调用OnNewIntent()---->OnResume();

        没有创建:OnCreate()----->OnResume();

       应用:

        如果想在在首页点击返回键的时候,要退出整个应用程序的时候,此时我们就可以把首页的LaunchMode设为该模式,每次回到首页的时候,首页都会位于栈顶,再按返回键返回的话就会退出整个应用程序。

      SingleInstance

    理解:

        如果一个Activity的LaunchMode为singleInstance的话,启动该Activity的时候都会重新创建一个新的实例对象。

       生命周期:

        OnCreate()----->OnResume()

        应用:

         接收到一个新的推送信息,点击后打开一个Activity的功能就可以把该Activity设置为该模式。

         之所以把生命周期也Debug出来,就是为了项目中数据刷新的实现,只有清楚理解生命周期,才能及时有效地更新数据,刷新页面。


         但是我们在Activity的Intent里面同样可以设置Activity的LaunchMode,就是利用FLAG;

         1、FLAG_ACTIVITY_NEW_TASK  功能类似于“SingleTask”

          2、FLAG_ACTIVITY_SINGLE_TOP 功能类似于“SingleTop”

          3、FLAG_ACTIVITY_CLEAR_TOP  该功能的效果前提是该Activity已经存在于回退栈里面,当跳转到该Activity的时候,会清楚该Activity上面所有的Activity。


                                    

这篇关于Activity的Launch Mode的理解以及相对应的生命周期的运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052641

相关文章

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

Pycharm安装报错:Cannot detect a launch configuration解决办法

《Pycharm安装报错:Cannotdetectalaunchconfiguration解决办法》本文主要介绍了Pycharm安装报错:Cannotdetectalaunchconfigur... 本文主要介绍了Pycharm安装报错:Cannot detect a launch configuratio

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

浅析Python中的绝对导入与相对导入

《浅析Python中的绝对导入与相对导入》这篇文章主要为大家详细介绍了Python中的绝对导入与相对导入的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1 Imports快速介绍2 import语句的语法2.1 基本使用2.2 导入声明的样式3 绝对import和相对i

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最