美文网首页
Android基础<第二篇>:Activity启动模式

Android基础<第二篇>:Activity启动模式

作者: NoBugException | 来源:发表于2021-12-21 20:10 被阅读0次

Activity启动模式有四种,分别是:standard、singleTop、singleTask、singleInstance

Activity启动模式如何设置?

如图所示,在AndroidManifest中可以配置Activity的启动模式

image.png

启动模式有四种,分别是:standard、singleTop、singleTask、singleInstance

Activity启动模式解析

standard:标准模式,默认模式,如果没有配置启动模式,默认就是standard模式。
作用:每次启动Activity都会创建一个Activity实例,Activity栈中都会新增一个Activity;

应用场景:一般都会使用这个启动模式,这个模式最为常见;
弊端:可以无限制的新建Activity实例,容易导致Activity栈臃肿,浪费内存;

singleTop
作用:启动Activity的时候,如果Activity栈顶已经有该Activity实例,则不会重新创建Activity实例,执行Activity的onNewIntent方法;
优点:在一定程度上减轻了Activity实例的冗余;
弊端:同样会存在内存中存在多个相同Activity实例的情况;

singleTask
作用:假设有一个ActivityA,在一个Activity栈(Task)中只有一个ActivityA实例,如果ActivityA不存在,那么会在该Task中新建一个ActivityA实例。如果ActivityA已存在,则将Activity栈顶的Activity实例将逐一出栈,直到ActivityA为止,ActivityA不会被销毁,它会被直接启动,执行Activity的onNewIntent方法;
弊端:经过实测,当Task中没有ActivityA时,连续快速启动两次同一个Activity,依然可以打开两个Activity,这时栈顶位置有两个相同的Activity,这种场景下,singleTask的特性失效;

singleInstance
作用:只有一个Activity实例,并且该Activity实例存放在一个单独的task中,该task中有且只有一个Activity实例,不能有其它Activity实例。当启动Activity时,如果内存中已有实例,那么直接启动,执行Activity的onNewIntent方法,否则,将新建一个task,在新task中新建一个Activity实例。

实际开发中的使用情况

在实际开发中,很少主动配置Activity启动模式,通常使用Intent的Flag来控制Activity的跳转意图。

[本章完...]

相关文章

网友评论

      本文标题:Android基础<第二篇>:Activity启动模式

      本文链接:https://www.haomeiwen.com/subject/fknxqrtx.html