activity 启动模式_Android世界:Activity的启动模式及其适用范围
一、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的启动模式及其适用范围相关推荐
- android activity启动模式_Android知识点【Activity】清单文件
哈喽 好久不见,最近太忙了 请大家原谅 今天我们来说一下android清单文件Activity都有哪些配置,来先上图: 大家一下子看了这么多属性可能觉得有些懵逼,我这边也是就常用的一些数据给大家做一下 ...
- Android学习之基础知识四-Activity活动7讲(活动的启动模式)
在实际的项目开发中,我们需要根据特定的需求为每个活动指定恰当的启动模式.Activity的启动模式一共有4种:standard.singleTop.singleTask.singleInstance. ...
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 启动Activity的流程(Launcher中点击图标启动)
启动Activity一般有多种方式,常见的有三种: 在Launcher桌面点击app图标 调用startActivity启动一个Activity 命令am start启动 这三种方式在服务端的处理方式 ...
- Android Activity的启动流程分析:以Launcher启动一个Activity为例,分析应用进程的创建、Activity的启动,以及他们和AMS之间的交互
文章目录 一. Step1 - Step 11:Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity: Step 1. Laun ...
- Activity、Task、Application关系+Intent启动Flag
什么是Android Application? 简单来说,一个apk文件就是一个Application. 任何一个AndroidApplication基本上是由一些Activities组成,当用户与 ...
- activity 生命周期_死磕Android_App 启动过程(含 Activity 启动过程)
1. 前言 Activity是日常开发中最常用的组件,系统给我们做了很多很多的封装,让我们平时用起来特别简单,很顺畅.但是你有没有想过,系统内部是如何启动一个Activity的呢?Activity对象 ...
- 【Android 启动过程】Activity 启动源码分析 ( Activity -> AMS、主线程阶段 )
文章目录 一.Activity 启动源码分析 ( Activity -> AMS 阶段 ) 一.Activity 启动源码分析 ( Activity -> AMS 阶段 ) 调用 star ...
- 默认开机启动;通过Broadcastreceiver广播监听开机启动,实现没有activity的自启服务或者自启应用程序。...
一.首先介绍一下如何开机启动: 第一种: 监控RECEIVE_BOOT_COMPLETED,即开机启动事件 第二种: 监控sd卡mount事件 开机总会扫描sd卡吧? 监控sd卡事件也有类似开机启 ...
最新文章
- iOS故障排除指南:基本技巧
- linux文件的操作原理简介 以及 实现linux cp命令的代码
- 从字节码角度解释i++和++i
- Python3 练习笔记五
- Spring安全:防止暴力攻击
- MFC工程按USB插口显示所有USB设备及插口(包括安卓)
- C++ vector 容器的使用
- css实现三栏布局的几种方法及优缺点
- 李开复谈创业失败十原因:经不住诱惑 直接山寨
- [VMware] vSphere 5 安装手记[1]-VMware ESXi 5.0.0 安装基本设置
- 中间弹框_Flutter AlertDialog弹框的基本使用概述
- host速度 mtk usb_MTK功能机MT2503平台USB充电电流设置
- PLM系统的经济收益
- c8500刷机 转帖
- 老毛子Padavan固件,小米3,mini路由一键自动更新固件
- 选修课计算机应用基础学什么,网络选修课-计算机应用基础 -期末考.docx
- Unity使用UnityWebRequest实现本地日志上传到web服务器
- 使用 Python 绘制 Log 函数图
- 巨量jsvmp,扣逻辑分析
- c语言程序实践感受心得,C语言实践心得体会
热门文章
- 从无到有算法养成篇:一文读懂有关Tree的前世今生
- 经典!MATLAB线性等分linspace()函数,精确等分点数
- python实战系列之爬取CSDN博客之星2020年度排名情况(附源码)
- chapter2 机器学习之KNN(k-nearest neighbor algorithm)--K近邻算法从原理到实现
- amoeba高可用mysql_amoeba for mysql 使用说明
- 爬虫训练之--获取错误并将其保存进本地文件
- 数据挖掘导论读书笔记11异常检测
- 老司机谈APK瘦身套路-项目优化篇
- var_export
- 288家众筹平台正常运营 43家停运或倒闭