Android中的Task和启动模式

深入浅出安卓启动模式和返回栈 你面试被问过安卓的四种启动模式吗?他们各自的应用场景又是什么呢。 阅读详情

今天简单了解了一下android中activity的启动模式和task内容,后面会随时补充和拓展。

android系统中的任务是如何运行的呢?当我们启动了一个手机应用时,一个task就启动了,后面可能会涉及多个activity的界面,这些activity的运行状态会被存储到Task的Activity堆栈中去。和普通的堆栈原理一样,activity的堆栈也是采用的"后进先出"原则。当我们启动一个新的activity时,它就会被push在活动堆栈的顶部,而每次按back键,当前的活动就会被弹出堆栈,而我们按home键,这时候task就会失去焦点并被保存在内存中,一旦重新启动,task便会将上次activity的界面读出并显示。

为了便于控制任务中activity的启动的控制,android为我们提供了一些方法来改变其启动模式。主要有两种方法来对其进行控制:

1.在menifest文件中的<activity/>标签中的launchMode属性对活动的启动方式进行控制:

它一共为我们提供了四种启动方式:

standard:标准模式,启动模式中的默认模式,无论打开新的activity还是intent接收消息,系统都会为该activity创建一个新的实例,缺点是太耗费资源

singleTop:如果该activity处于栈顶,即最后一个创建的activity,那么它接收intent消息或者其他activity通过intent跳转到该activity不需要重新创建一个实例,而是通过onNewIntent方法处理接收的消息,这种模式在一定程度上减少了资源浪费。

singleTask:该模式保证同一个activity在活动堆栈中只存在一个实例,而且存在于栈底。此模式比较节省资源,手机浏览器一般使用这种模式。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。这种模式相当有用,在以后的多activity开发中, 经常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为 singleTask 模式,这种问题将不复存在。

singleInstance:类似于singleTask,不同之处在于该模式让activity独自占据一个task,其他activity不能存在于这个task中。

2.通过设置Intent的flag属性来改变activity的启动模式

.FLAG_ACTIVITY_NEW_TASK:等同于上面的singleTask

.FLAG_ACTIVITY_SINGLE_TOP:等同于上面的singleTop

.FLAG_ACTIVITY_CLEAR_TOP:如果activity的实例已存在,该方法将会清除其所在栈的其他所有activity实例。


    最近恶补基础,多多看书记笔记,加油!

Arduino应用——PWM控制直流电机风扇 Arduino应用——PWM控制直流电机风扇PWM原理实验器件功能描述如何改变文本的样式插入链接与图片实现代码生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 最近在使用arduino UNO开发板完成课程小作业。其中一个要求设计一个电风扇控制系统,要求能够通过PWM调节风扇的转速。期间搜索了许多例程和方法,但受限于器件,效果不 阅读详情

相关推荐

Windows下的Geant4安装教程

本教程将从0开始展示在Windows下如何安装Geant4,包括各种辅助工具(QT、Cmake、Visual Studio)的下载安装,环境变量的配置,以及example的生成等。

weixin_49065278的博客 4107

Android Intent.FLAG_ACTIVITY_NEW_TASK的个人理解

一 首先分四部曲简单做一下说明 1.What(是什么):Intent类中的一个静态标志属性 2.Why(为什么要使用):在特殊情况下,如果不加这个标志,会报错(下文详细说明) 3.When(什么时候使用):当调用startActivity启动一个Activity时 4.How(如何使用) 总结: 首先分四部曲简单做一下说明 What(是什么):Intent类中的一个静态标志属性 public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000; Why

qq_39431405的博客 4203

STM32G474片内运放实战:从独立模式到PGA与ADC采样链路

在嵌入式控制系统中,运放是连接模拟信号与数字处理的关键环节。传统方案依赖外部分立运放搭建放大电路,存在成本高、PCB布局敏感、一致性差等痛点。STM32G474在MCU内部集成多路可编程运放(OPAMP),支持独立模式、跟随器、PGA以及比较器模式,配合内部ADC和DMA可构成完整模拟采集链路。通过片内互联,信号路径大幅缩短,抗干扰性和通道一致性显著提升,尤其适用于电机电流采样、数字电源等场景。本文以STM32G474为例,详解从独立模式到PGA增益配置,再到ADC与DMA联动调试的完整过程,并给出采样时间

weixin_29194255的博客 246

Android Activity.FLAG.ACTIVITY_NEW_TASK是什么

activity启动目标activity时,有无该标志没有任何影响非activity启动目标activity时,必须添加该标志告诉系统新开任务栈并将新建activity放入其中。

ganshenml的专栏 4934

金融波动预测:GARCH模型实战解析与ARIMA对比

本文深入解析GARCH模型在金融波动预测中的实战应用,并与传统ARIMA模型进行对比。通过沪深300指数日收益率数据的案例分析,展示GARCH模型如何有效捕捉波动聚集效应,提升极端波动预测准确率。文章包含Python代码实现、参数解读及模型选择指南,为量化交易者提供实用的波动率建模解决方案。

weixin_29098367的博客 189

Matlab实战:水声信号DEMON谱分析从入门到精通(附完整源码)

本文详细介绍了使用Matlab进行水声信号DEMON谱分析的完整流程,从基础理论到实战应用,涵盖信号预处理、包络提取、频谱分析等关键步骤,并附完整源码。特别针对水声通信中的低信噪比环境,提供了多种优化方案和性能提升技巧,帮助读者快速掌握这一水下目标检测的核心技术。

gamma的博客 296

Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释

本文大部分参考自http://blog.youkuaiyun.com/mayingcai1987/article/details/6200909,对原文中的讲解FLAG_NEW_TASK地方加了一些自己的观点,用红色标记 1. Task是包含一系列Activity的堆栈, 遵循先进后出原则. 2. Task默认行为: (1)前提: Activity A和Activity B在同一个应用...

weixin_30312659的博客 597

UNSW-NB15数据集:网络流量分析与恶意攻击检测实战指南

本文提供了UNSW-NB15数据集在网络流量分析与恶意攻击检测领域的实战指南。详细介绍了该数据集的构成、核心特征解析、特征工程处理、机器学习模型训练与评估方法,并探讨了模型部署及持续优化的挑战与思路,帮助读者构建高效的网络攻击检测系统。

weixin_29193359的博客 258

android activity new task,activity外部调用startActivity的new task异常解析

我现在需要在点击listview的某个item的时候启动一个activity,因为我的listview不在activity中,所以为了简便我直接用context来调用activity,如下:Intent intent = new Intent(view.getContext(), BlogDetail.class);intent.putExtra("blog_id", blog.getId());...

weixin_35545345的博客 1402

昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子

【代码】昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子。

william_myq的博客 508

Flink实战(101):双流join(三)双流中实现Inner Join、Left Join与Right Join

声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。 《2021年最新版大数据面试题全面开启更新》 简介 之前文章中提到JoinedStream与CoGroupedStream,例如下列代码: dataStream.join(otherStream) .where(0).equalTo(1) .window(TumblingEventTimeWindows.of(Time.seconds(3))) .apply { ... } 由于joinedStream与

微信搜:import_bigdata,大数据领域硬核原创作者 737

Android中Task任务栈的分配

首先我们来看下Task的定义,Google是这样定义Task的:a task is what the user experiences as an "application." It's a group of related activities, arranged in a stack. A task is a stack of activities, not a class or an e

张亚运的专栏 2536

【BUG已解决】RuntimeError: CUDA error: no kernel image is available for execution on the device 解决方案

方案适用场景推荐指数精确匹配官方版本绝大多数场景(大众消费卡+主流数据中心卡)⭐⭐⭐⭐⭐安装历史旧版本Pascal/Maxwell等老显卡⭐⭐⭐⭐安装Nightly版本刚发布的最新架构显卡⭐⭐⭐⭐源码编译官方各版本均不支持的特殊硬件⭐⭐Docker官方镜像追求省心、避免版本排查⭐⭐⭐⭐⭐的核心是PyTorch 预编译包不包含你显卡对应的计算能力架构先确认显卡真实计算能力),而不是盲目重装驱动对比 PyTorch 支持的架构列表),定位是否真的不匹配精确匹配官方版本。

博客 1万+

Android Task 、 TaskRecord 和启动模式之学习笔记

一 . Task 、TaskRecord 简介 1 . Task :Taks 即任务,是用户在执行某项工作时与之互动的一系列 Activity 的集合。这些 Activity 按照每个 Activity 打开的顺序排列在一个 TaskRecord 中。 2 . TaskRecord :即任务栈,或者叫返回堆栈 ( back Stack ) ,是一种栈的数据结构,按照“后进先出”的规则管理着其中的元素。换言之,当用户打开一个应用,并在该应用中启动了一系列的Activity ,这些Activity 默认情.

Smile_729day的博客 3618

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

[android]android Task 任务 简介

关于Android中的组件和应用,之前涉及,大都是静态的概念。而当一个应用运行起来,就难免会需要关心进程、线程这样的概念。在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的。  Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多时候,能够简化上层开发人员的理解难度,帮助大家

guomeijuan916的专栏 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android task启动模式,Android 进阶2:Activity 的 Task 与启动模式

Android 中的 Task 是什么我们知道,一个应用中可能有多个 Activity,而这些 Activity 被以栈的形式管理。当我们新打开 Activity 或者者按返回时,会导致 Activity 的入栈/出栈。[图片上传失败...(image-b73788-1548163287120)]有时候我们要进行少量跨应用的操作,比方拍照、P 图、分享到朋友圈,这一系列操作中会有多个应用的 Act...

weixin_42524499的博客 367

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Activity Process Task Application 专题讲解

Activity Process Task Application 专题讲解 Activity、和进程 为了阅读方便,将文档转成pdf http://files.cnblogs.com/franksunny/ActivityTask%E5%BA%94%E7%94%A8%E5%92%8C%E8%BF%9B%E7%A8%8B%E5%B0%8F%E7%BB%93.pdf ...

dihua7808的博客 218

LauchMode(Activity的启动模式)

什么是task: A task is a collection of activities that users interact with when performing a certain job. The activities are arranged in a stack (the back stack), 用户在完成某项功能活动时,开启的所有activity的集合称作一个task,这些a

蔷薇_wendy的博客 468

【Android 12】Activity启动模式

一、启动模式 google文档的介绍: 您可以通过启动模式定义 Activity 的新实例如何与当前Task关联。您可以通过两种方式定义不同的启动模式: 使用manifest文件 当您在manifest文件中声明 Activity 时,您可以指定该 Activity 在启动时如何与Task关联。 使用Intent标记 当您调用 startActivity()时,可以在 Intent中添加一个标记,用于声明新 Activity 如何(或是否)与当前Task相关联。 因此,如果 Activity A 启动 A

yihanss的博客 1840

Android Activity启动模式与Task理解

一、Activity

Simon的专栏 866

启动模式 singleTask 和FLAG ACTIVITY NEW TASK具有不同的行为

启动模式 singleTask 和FLAG ACTIVITY NEW TASK具有不同的行为

rgjtfc的博客 602

Android启动模式小结

一、概述 1、分类 Android的启动模式分为以下四种: standard singleTop singleTask singleInstance 其中“standard”为activity的默认启动模式。 2、使用 直接在AndroidManifest.xml中的对应的activity中添加“android:launchmode”字段即可。

u013423595的博客 330

Activity 和Task 的关系

Task作用是确保Activity按照指定的方式退出,并当用户按“back” 键是按照指定的方式执行下一个Activity 。 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity)则会在最上面。从Task中取出东西(Activity)是从最顶端取出,也就是说最先取出的是最后添加的东西(Activity

nosxcy的专栏 1714

我以为理解了Android四大启动模式,直到被打脸

前言 这篇文章的背景来自于周五的时候,有一个小伙伴私聊我一个问题。说实话让我“颇为震惊”: 1、问题看起来很简单,关于Activity启动模式...但是的确里边的细节触及了我的知识盲区。 2、这个小伙伴发了一个详细的pdf文档,看起来也是经常总结~点赞这种学习态度~ 这里在分析启动模式的基础上,或回答他的问题,或验证他的猜想。主要集中在这几个地方,大家也可以在看文章的时候先问问自己能不能回答出...

贵公子丶笔记 396

Android:Task概念以及相关

Android Task:  Android的Task是一个Activity栈,用来完成用户的某一个目的,而不管这个Acitivity是属于哪个AP的。Task中的Activity可以分属于不同的AP。  在Task中,有一个Acitivity叫root activity,它是用来启动一个Task。  Tasks在系统中做交互的时候,这个Task所包含的所有Activities会

HMYANG314的专栏 1154

Activity和Task(栈)的关系

一、Activity和Task(栈)的关系   Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity)则会在最上面。从Task中取出东西(Activity)是从最顶端取出,也就是说最先取出的是最后添加的东西(Activity),以此类推,最后取出的是第一次添加的Activity,而Activity在Ta

jiangliloveyou的专栏 1059
上一篇: 关于Android中Listview的item点击不响应问题的解决
下一篇: android 真机调试魅族手机无法显示logcat日志
水月沐风
博客等级 码龄10年 186粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值