在android里,有4种activity的启动模式,分别为: standard, singleTop, singleTask和singleInstance, 其中standard和singleTop类似, singleTask和singleInstance类似, 用法如下:

(1).standard和singleTop

这两种加载模式下, 同一个task中可以存在一个activity的多个实例, 并且可以位于activity栈的任意位置。

先举个例子:

假设目标task的activity栈为: A->B->C->D(栈底->栈顶)

在程序中调用startActivity(D)

如果D是standard模式, 则activity栈变为:

A->B->C->D->D, 也就是会重新创建一个D实例

如果D是singleTop模式, 则activity栈变为

A->B->C->D, 不会创建D实例, 就是说如果D在目标task 的activity栈的栈顶, 则不会创建新的实例, 而是调用D的onNewIntent()方法, 反之如果D不在目标task 的activity栈的栈顶, 则会重新创建一个D实例

(2). singleTask和singleInstance

这两种加载模式下, 同一个task中只会存在一个activity的实例, 如果通过startActivity()启动,则调用onNewIntent()方法, 而不是创建一个新的实例。这两种模式下, activity实例均位于activity栈的栈底。

这两种加载模式的区别:

假设一个Activity的实例A 采用如下两种加载模式:

singleTask:

如果A调用startActivity(B)启动B实例, 则A和B位于同一个task中。

singleInstance:

如果A调用startActivity(B)启动B实例, 则系统会自动给intent添加一个属性FLAG_ACTIVITY_NEW_TASK, 将B实例放入到一个新的task中, 也就是说A实例所在的task中只能有A自己, 不能存在其他实例

转载于:https://www.cnblogs.com/wangzehuaw/p/4977649.html

activity的四种加载模式相关推荐

  1. 区分Activity的四种加载模式

    在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity.可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity. ...

  2. 区分Activity的四种加载模式(转)

    转自:http://marshal.easymorse.com/archives/2950 在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activi ...

  3. Activity的四种加载模式(转载)

    在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity.可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity.这 ...

  4. 区分Activity的四种加载模式-activity

    转载:http://marshal.easymorse.com/archives/2950 在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activi ...

  5. Activity四种加载模式

    在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity.可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity. ...

  6. android activity四种加载模式

    Activity之间的跳转,或者说加载一个新的Activity,一般对于开发者来说,都不是一个太难的问题.直到后来随着不断的深入,才发现原来Activity的加载还分为四种不同加载模式,让我突然有了一 ...

  7. Android之Activity的4种加载模式

    一个Task可以理解成一个Activtiy栈,可以装载一个或者多个Activity,回退和打开的顺序逻辑和基本的数据结构栈是一致的.下面的这段话非常关键:那就是,一个Application如果有N个A ...

  8. Unity—AssetBundle的打包及四种加载资源方式

    AssetBundle打包:脚本放在Editor文件夹内 具体代码如下: using UnityEditor; using System.IO;public class CreateAssetBund ...

  9. Android图片加载之认识bitmap的四种加载方式

    Android的Bitmap有四种高效加载方式 从获取方式分: (1)以文件流的方式 假设在sdcard下有 test.png图片 FileInputStream fis = new FileInpu ...

最新文章

  1. 开发者,只有被裁,没有退休
  2. pcie 设备号多少位_怎么读取PCIe设备的VPD信息?
  3. [END_OBJECT] but found [FIELD_NAME]')
  4. shiro 删除用户session_我的shiro之旅: 十二 shiro 踢出用户(同一用户只能一处登录)...
  5. rman备份rman-00554 ,rman-04005错误
  6. python连连看小游戏_python递归法实现简易连连看小游戏
  7. Ubuntu16.04 安装Teamviewer
  8. 一个鼠标控制2台电脑简单方法
  9. 【vijos】在vijos的自己的域中创建题目
  10. 《普林斯顿微积分读本》笔记
  11. 浙大PAT 1063
  12. 关于WIN10开机自动开启小键盘解决方案
  13. QQVideo 开始公测
  14. 企鲸客scrm 渠道活码功能介绍及作用
  15. 前端背景图放置_如何在css中添加背景图?
  16. 服务器主板四路SLI时候出现的问题
  17. 3行代码爬取京东数据
  18. 面向搜索引擎的隐蔽式SEO木马---之查杀再现笔记
  19. 48小时房价暴涨57%,数据解读站在风口上的这座小城
  20. JS冒泡排序的6种写法(武当雄风)

热门文章

  1. Netbeans使用maven下载源码
  2. 如何定制一款12306抢票浏览器——完结篇
  3. Windows7下配置MinGW+CodeBlocks+OpenCV2.3.1
  4. 【C++】Google C++编码规范(一):作用域
  5. 【物联网】NB-IoT简介
  6. linux驱动:音频驱动(二)ASoc
  7. 我的Rails笔记(1)
  8. 2021暨南大学计算机考研,暨南大学2021广播电视专硕经验贴
  9. 数据库中的datatime的长度怎么设定_软件测试必备之数据库知识(一)
  10. 怎么用python画个电脑_python语言还是java如何用python画爱心