美文网首页AndroidWorldAndroid开发1-Android开发知识
Android基础:最易懂的Activity启动模式详解

Android基础:最易懂的Activity启动模式详解

作者: Carson带你学安卓 | 来源:发表于2017-01-22 16:55 被阅读2325次

前言

  • Android基础中,Activity的启动模式非常重要
  • 本文将全面介绍 Activity的启动模式

目录

目录

1. 定义

即Activity启动的方式


2. 启动模式的类别

Android启动提供了四种启动方式:

  • 标准模式(Standard
  • 栈顶复用模式(SingleTop
  • 栈内复用模式(SingleTask
  • 单例模式(SingleInstance

3. 知识储备

  • Activity的管理方式 = 任务栈
  • 任务栈 采用的结构 = “后进先出” 的栈结构
  • 每按一次Back键,就有一个Activity出栈
示意图

4. 具体介绍

  • 如下图
示意图
  • 通俗讲解


    图解

5. 四种启动模式的区别

示意图

6. 启动模式的设置

启动模式有2种设置方式:在AndroidMainifest设置、通过Intent设置标志位

6.1 在AndroidMainifest设置

AndroidMainifestActivity配置进行设置

<activity

android:launchMode="启动模式"
//属性
//standard:标准模式
//singleTop:栈顶复用模式
//singleTask:栈内复用模式
//singleInstance:单例模式
//如不设置,Activity的启动模式默认为**标准模式(standard)**
</activity>

6.2 通过Intent设置标志位

Intent inten = new Intent (ActivityA.this,ActivityB.class);
intent,addFlags(Intent,FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

标记位属性

标记位属性 含义
FLAG_ACTIVITY_SINGLE_TOP 指定启动模式为栈顶复用模式(SingleTop
FLAG_ACTIVITY_NEW_TASK 指定启动模式为栈内复用模式(SingleTask
FLAG_ACTIVITY_CLEAR_TOP 所有位于其上层的Activity都要移除,SingleTask模式默认具有此标记效果
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 具有该标记的Activity不会出现在历史Activity的列表中,即无法通过历史列表回到该Activity上

6.3 二者设置的区别

  • 优先级不同
    Intent设置方式的优先级 > Manifest设置方式,即 以前者为准
  • 限定范围不同
    Manifest设置方式无法设定 FLAG_ACTIVITY_CLEAR_TOPIntent设置方式 无法设置单例模式(SingleInstance

7. 总结

  • 本文全面介绍了 Android的4种 Activity启动模式
  • 接下来会介绍继续介绍Android开发中的相关基础知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记

请点赞!因为你们的赞同/鼓励是我写作的最大动力!

相关文章阅读
Android开发:最全面、最易懂的Android屏幕适配解决方案
Android开发:史上最全的Android消息推送解决方案
Android开发:最全面、最易懂的Webview详解
Android开发:JSON简介及最全面解析方法!
Android四大组件:Service服务史上最全面解析
Android四大组件:BroadcastReceiver史上最全面解析


欢迎关注Carson_Ho的简书!

不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度

相关文章

网友评论

  • 一条老狗:胸弟6.2哪里写错了,FLAG_ACTIVITY_NEW_TASK对用的是singTask模式
  • yyg:发觉我想看的东西,在这里都能找到 哈哈哈 谢了
  • stevenMvp:singleInstance的应用场景是什么?一般好像用不到?
  • Freerain:FLAG_ACTIVITY_NEW_TASK 这个用intent方式启动activity 是标准型的?不是要新建task栈吗?
  • 3481319ea87f:singletask,如果原来存在某一个任务栈中,在另外一个任务栈被调用,是不是另外一个任务栈会在被新创建。也就是说他只存在于当前任务栈的唯一

本文标题:Android基础:最易懂的Activity启动模式详解

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