Android系统采用任务栈的方式来管理Activity实例。

栈是后进先出的数据结构。通常一个应用程序对应一个任务栈,默认情况下,每启动一个Activity都会入栈,处于栈顶位置。用户操作的永远都是栈顶的Activity。

Activity可以层叠摆放,每启动一个新的Activity都会覆盖在原Activity之上(入栈),单击返回按钮,最上面的Activity会被销毁,下面的Activity重新显示。

Activity有4种启动模式:

1、standard模式

上面介绍的模式就是standard模式。standard模式是Activity默认的启动模式。每启动一个Activity就在栈顶创建一个新的实例。

闹钟通常采用此种模式。

2、singleTop模式

如果有时候satndard模式并不合理,比如当前Activity已处于栈顶,再次启动此Activity会重新创建实例,不会直接复用。

singleTop顾名思义,栈顶单例。

将某个Activity的启动模式设置为singleTop,启动此Activity时,会先检查栈顶是否是此Activity的实例,如果是,则直接复用,如果不是,才创建实例。

浏览器的书签通常采用此种模式。

3、singleTask模式

singleTop模式有一定的缺陷,当栈中有此Activity的实例,但未处于栈顶时,仍会创建实例,栈中可能会存在此Activity的多个实例。

singleTask,顾名思义,任务栈中只有一个实例。

启动某个Activity时,会先检查任务栈中是否有该Activity的实例,有就直接复用(把前面所有的Activity出栈),没有才创建并入栈。

浏览器的主界面通常采用此模式。

4、singleInstance模式

会启动一个新的任务栈来管理当前程序中singleInstance模式启动的Activity,在Android系统中,该Activity只有一个实例。

这种模式主要是为了,在不同程序间共享同一个Activity实例。

启动Activity时,若Android系统中不存在该Activity的实例,则创建并入栈;若已存在,不管此实例位于哪个程序的哪个任务栈中,系统都会把该任务栈转移到前台,显示该实例。

来电界面通常使用此模式。

可在AndroidManifest.xml文件对应的 元素中用 launchMode属性 指定启动模式:

1

3 android:label="@string/title_activity_2"

4 android:theme="@style/AppTheme.NoActionBar"

5 android:launchMode="singleTask">

6

缺省时默认为standard模式。

java activity模式_Activity的启动模式相关推荐

  1. Activity的4种启动模式

    2019独角兽企业重金招聘Python工程师标准>>> Activity共有四种启动模式,standard/singleTop/singleTask/singleInstance 在 ...

  2. Activity的四种启动模式

    standard:标准的启动模式,默认启动模式.启动一个activity就会创建该activity的实例. singleTop:如果启动的activity已经位于栈顶,那么就不会重新创建一个新的act ...

  3. Android零基础入门第77节:Activity任务栈和启动模式

    2019独角兽企业重金招聘Python工程师标准>>> 通过前面的学习,Activity的基本使用都已掌握,接下来一起来学习更高级的一些内容. Android采用任务栈(Task)的 ...

  4. Android之Activity的四种启动模式

    当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中.可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大量重复的Activit ...

  5. android4.0 开机启动activity 4.0,如何正确理解和使用Activity的4种启动模式

    关于Activity启动模式的文章已经很多,但有的文章写得过于简单,有的则过于注重细节,本文想取一个折中,只关注最重要和最常用的概念,原理和使用方法,便于读者正确应用. Activity的启动模式有4 ...

  6. Android Activity:四种启动模式,Intent Flags和任务栈(转自他人博客)

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.那各个页面跳转关系如何决定呢?如果启动了顺序启动了ABCD的Activiy,如何从D调回 ...

  7. Activity的四种启动模式-图文并茂

    1.对于使用standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例. 例如A启动A,A再接着启动A,A继续启动A,然后再分别出栈,如图所示 2. ...

  8. Activity的四种启动模式和onNewIntent()

    Android中Activity启动模式详解 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模 ...

  9. Android Activity的4种启动模式详解(示例)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5233269.html 先介绍下Android对Activity的管理,Android采用Task来管理多个A ...

最新文章

  1. InsightFace tensorRT
  2. Webserver管理系列:11、注意默认的隐含共享
  3. ORACLE查询删除重复记录
  4. 【Linux】14.ubuntu忘记root密码、用户密码输入次数过多锁住的问题
  5. python之闭包的实现
  6. 在.net3.5中使用ListView控件和DataPager控件笔记
  7. linux下基于jrtplib库的实时传送实现
  8. Go语言游戏服务器思维导图
  9. Host 'localhost' is not allowed to connect to this MySQL server
  10. ActiPro.Syntax.Editor破解版
  11. 检测空指针 静态检测_Parasoft为G3提供专注于安全性和整体软件质量的静态分析解决方案...
  12. Visual Studio Code编辑器的实用插件和工作中实用的技巧
  13. 【ffmpeg】音频采集
  14. Windows_5种方法解除Windows密码
  15. 天玥运维安全网关(启明星辰堡垒机)无法登录资源主机的问题
  16. 数字签名和数字证书的区别与联系
  17. statusStrip用法
  18. 光猫通过 Telnet 修改自带 WLAN 功能 SSID 强制 ChinaNet- 问题
  19. 720度全景带你vr云游景区,vr云游感受和应用介绍
  20. 【Ubuntu18.04 无法找到终端 ifconfig 命令】

热门文章

  1. Stream anyMatch查找案例
  2. 前端工具安装和运行相关
  3. python中的def语句输出1000以内的回文_各种方法测试回文的性能[Python]
  4. 设置线程当天十二点执行_这份JAVA多线程笔记真的是细节满满,几乎全是你工作能用到的干货...
  5. 发动机压缩比怎么计算公式_怎么判断发动机有积碳,发动机积碳多的症状有哪些...
  6. electron开发_基于Electron+React的跨平台应用程序基础开发框架
  7. linux 有名管道pipe,linux 用無名管道pipe和有名管道fifo實現線程間通信
  8. 鸿蒙系统的适配国产手机,真正的好消息!其它国产机,也在适配华为鸿蒙系统...
  9. c语言api_用C语言来拓展python的功能
  10. c语言中字符数字加'0',C语言中的NULL与转义字符'\0'以及数值0的关系