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

相关文章

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

22.手绘Spring DI运行时序图

1.依赖注入发生的时间 当Spring loC容器完成了 Bean定义资源的定位、载入和解析注册以后,loC容器中已经管理类Bean 定义的相关数据,但是此时loC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况 发生: 、用户第一次调用getBean()方法时,loC容器触发依赖注入。 、当用户在配置文件中将<bean>元素配置了 lazy-init二false属性,即让

21.手绘Spring IOC运行时序图

1.再谈IOC与 DI IOC(lnversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让 容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们所看到的配置文件。 DI(Dependency Injection)依赖注入:就是指对象是被动接受依赖类

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

回调的简单理解

之前一直不太明白回调的用法,现在简单的理解下 就按这张slidingmenu来说,主界面为Activity界面,而旁边的菜单为fragment界面。1.现在通过主界面的slidingmenu按钮来点开旁边的菜单功能并且选中”区县“选项(到这里就可以理解为A类调用B类里面的c方法)。2.通过触发“区县”的选项使得主界面跳转到“区县”相关的新闻列表界面中(到这里就可以理解为B类调用A类中的d方法

如何理解redis是单线程的

写在文章开头 在面试时我们经常会问到这样一道题 你刚刚说redis是单线程的,那你能不能告诉我它是如何基于单个线程完成指令接收与连接接入的? 这时候我们经常会得到沉默,所以对于这道题,笔者会直接通过3.0.0源码分析的角度来剖析一下redis单线程的设计与实现。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是开源

MySQL理解-下载-安装

MySQL理解: mysql:是一种关系型数据库管理系统。 下载: 进入官网MySQLhttps://www.mysql.com/  找到download 滑动到最下方:有一个开源社区版的链接地址: 然后就下载完成了 安装: 双击: 一直next 一直next这一步: 一直next到这里: 等待加载完成: 一直下一步到这里

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<

如何实现一台机器上运行多个MySQL实例?

在一台机器上一个MySQL服务器运行多个MySQL实例有什么好处?这里我先入为主给大家介绍这样做至少存在两个好处(看完这篇文章后理解会更透彻): (1)减轻服务器链接负担 (2)为不同的用户提供不同的mysqld服务器的访问权限以方便这些用户进行自我管理。   下面我介绍具体的实现过程: 一、准备工作     台式机一台、Windows系统、MySQL服务器(我安装的版本是MySQL

Python几种建表方法运行时间的比较

建立一个表[0,1,2,3.......10n],下面几种方法都能实现,但是运行时间却截然不同哦 import time#方法一def test1(n):list=[]for i in range(n*10):list=list+[i]return list#方法二def test2(n):list=[]for i in range(n*10):list.append(i)#方法三d