一、Activity启动模式简介

activity启动模式,可以理解为activity在任务栈(也叫“回退栈”)的回退规则,即点击“back”键时,activity的执行顺序。为节省资源,方便调用,Android构建不同的启动模式以便于开发者在不同场景使用。

该属性声明在Manifest文件中,由launchMode进行配置,内含4种启动模式,如下:

补充:任务栈,是一个先进后出的存储空间,存放运行过程中的各activity对象引用。


二、启动模式介绍及使用场景

声明:下方各流程图均来源于https://blog.csdn.net/zy_jibai/article/details/80587083,有兴趣可以去看看。


Standard:标准模式,不声明该属性时,默认模式。启动activity时,将activity对象放置到任务栈的栈顶,如果不存在任务栈,首先创建一个任务栈;正常创建、销毁activity。

优点:便于activity的正常管理,逻辑相对简单;

缺点:同一activity可能被创建多次,不利于activity的重用,造成资源的浪费;


SingleTop:单顶模式,当activity存在于栈顶时,不会重构activity,而是调用onNewIntent(Intent intent)方法加载之前的页面;当activity不存在于栈顶,就会重新构建activity,并将其显示到栈顶;

优点:在栈顶时,重用栈顶activity;

缺点:activity可能存在多次创建;

适用场景:①来推送消息后,点击消息跳转到详情界面,防止创建多个界面;②即时通讯的聊天界面等。


SingleTask:单任务栈模式;当activity不存在于任务栈,进行创建;当存在于任务栈中,即移除其顶部的activity,将其移到栈顶,显示出来。

优点:actiivity重用,只存在一个activity;节约内存,用户体验好;

缺点:移除其他activity,不利用管理;

适用范围:应用的启动界面,防止其他应用在调启时,创建多个应用界面;如:网易新闻的新闻界面(MainActivity)

做浏览器、微博之类的应用,比如其他App需要打开我们的浏览器页面,就可以配置他为singleTask模式,保证他只有一个唯一实例,节约内存同时按下返回键后的感官也更顺畅。但是需要注意,提供给人调用的页面最好是栈底元素。


SingleInstance:单实例模式,创建的activity位于新的task中。如果已经创建过目标Activity实例,则不会创建新的Task,而是将以前创建过的Activity唤醒。

优点:

1. 以singleInstance模式启动的Activity具有全局唯一性,即整个系统中只会存在一个这样的实例。

2. 以singleInstance模式启动的Activity在整个系统中是单例的,如果在启动这样的Activiyt时,已经存在了一个实例,那么会把它所在的任务调度到前台,重用这个实例。

3. 以singleInstance模式启动的Activity具有独占性,即它会独自占用一个任务,被他开启的任何activity都会运行在其他任务中。

4. 被singleInstance模式的Activity开启的其他activity,能够在新的任务中启动,但不一定开启新的任务,也可能在已有的一个任务中开启。

原文:https://blog.csdn.net/zivensonice/article/details/51569502

缺点:不利于回收利用资源;

适用场景:需要全局只创建一个activity的场景,如,网易新闻的锁屏界面、手机来电界面等;

activity 启动模式_Android世界:Activity的启动模式及其适用范围相关推荐

  1. android activity启动模式_Android知识点【Activity】清单文件

    哈喽 好久不见,最近太忙了 请大家原谅 今天我们来说一下android清单文件Activity都有哪些配置,来先上图: 大家一下子看了这么多属性可能觉得有些懵逼,我这边也是就常用的一些数据给大家做一下 ...

  2. Android学习之基础知识四-Activity活动7讲(活动的启动模式)

    在实际的项目开发中,我们需要根据特定的需求为每个活动指定恰当的启动模式.Activity的启动模式一共有4种:standard.singleTop.singleTask.singleInstance. ...

  3. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  4. 启动Activity的流程(Launcher中点击图标启动)

    启动Activity一般有多种方式,常见的有三种: 在Launcher桌面点击app图标 调用startActivity启动一个Activity 命令am start启动 这三种方式在服务端的处理方式 ...

  5. Android Activity的启动流程分析:以Launcher启动一个Activity为例,分析应用进程的创建、Activity的启动,以及他们和AMS之间的交互

    文章目录 一. Step1 - Step 11:Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity: Step 1. Laun ...

  6. Activity、Task、Application关系+Intent启动Flag

    什么是Android  Application? 简单来说,一个apk文件就是一个Application. 任何一个AndroidApplication基本上是由一些Activities组成,当用户与 ...

  7. activity 生命周期_死磕Android_App 启动过程(含 Activity 启动过程)

    1. 前言 Activity是日常开发中最常用的组件,系统给我们做了很多很多的封装,让我们平时用起来特别简单,很顺畅.但是你有没有想过,系统内部是如何启动一个Activity的呢?Activity对象 ...

  8. 【Android 启动过程】Activity 启动源码分析 ( Activity -> AMS、主线程阶段 )

    文章目录 一.Activity 启动源码分析 ( Activity -> AMS 阶段 ) 一.Activity 启动源码分析 ( Activity -> AMS 阶段 ) 调用 star ...

  9. 默认开机启动;通过Broadcastreceiver广播监听开机启动,实现没有activity的自启服务或者自启应用程序。...

    一.首先介绍一下如何开机启动: 第一种:  监控RECEIVE_BOOT_COMPLETED,即开机启动事件 第二种: 监控sd卡mount事件  开机总会扫描sd卡吧? 监控sd卡事件也有类似开机启 ...

最新文章

  1. iOS故障排除指南:基本技巧
  2. linux文件的操作原理简介 以及 实现linux cp命令的代码
  3. 从字节码角度解释i++和++i
  4. Python3 练习笔记五
  5. Spring安全:防止暴力攻击
  6. MFC工程按USB插口显示所有USB设备及插口(包括安卓)
  7. C++ vector 容器的使用
  8. css实现三栏布局的几种方法及优缺点
  9. 李开复谈创业失败十原因:经不住诱惑 直接山寨
  10. [VMware] vSphere 5 安装手记[1]-VMware ESXi 5.0.0 安装基本设置
  11. 中间弹框_Flutter AlertDialog弹框的基本使用概述
  12. host速度 mtk usb_MTK功能机MT2503平台USB充电电流设置
  13. PLM系统的经济收益
  14. c8500刷机 转帖
  15. 老毛子Padavan固件,小米3,mini路由一键自动更新固件
  16. 选修课计算机应用基础学什么,网络选修课-计算机应用基础 -期末考.docx
  17. Unity使用UnityWebRequest实现本地日志上传到web服务器
  18. 使用 Python 绘制 Log 函数图
  19. 巨量jsvmp,扣逻辑分析
  20. c语言程序实践感受心得,C语言实践心得体会

热门文章

  1. 从无到有算法养成篇:一文读懂有关Tree的前世今生
  2. 经典!MATLAB线性等分linspace()函数,精确等分点数
  3. python实战系列之爬取CSDN博客之星2020年度排名情况(附源码)
  4. chapter2 机器学习之KNN(k-nearest neighbor algorithm)--K近邻算法从原理到实现
  5. amoeba高可用mysql_amoeba for mysql 使用说明
  6. 爬虫训练之--获取错误并将其保存进本地文件
  7. 数据挖掘导论读书笔记11异常检测
  8. 老司机谈APK瘦身套路-项目优化篇
  9. var_export
  10. 288家众筹平台正常运营 43家停运或倒闭