Activity之任务栈&启动模式

本文深入探讨Android应用中任务栈的概念,解释其作用、如何使用及不同启动模式的实现,帮助开发者提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Activity之任务栈

1.一个应用程序一般都是由多个Activity组成的。

2.任务栈(task stack,别名:back stack后退栈:按后退键就是关闭当前的Activity,相当于把任务栈的栈顶元素给移出)的作用:记录存放用户开启的Activity的先后顺序。

3.一个应用程序一被开启,系统就给他分配一个任务栈,当所有的Activity都退出的时候,任务栈就清空了。

4.任务栈的id是一个integer的数据类型,是自增长的。getTaskId()方法返回的是当前Activity所在任务栈的id。

5.在Android操作系统里面,会存在多个任务栈,一个应用程序对应一个任务栈。

6.桌面应用和一般的应用程序是一样的,任务栈的行为也是一样

7.默认情况下,关闭掉一个应用程序,清空了这个应用程序的任务栈,应用程序的进程还会保留


为什么要引入任务栈的概念

windows下可以通过点击任务栏切换任务

Android下长按home键切换任务

为了记录用户开启了哪些Activity,记录这些Activity开启的先后顺序,Google引入任务栈概念,帮助维护好的用户体验。

栈顶的Activity始终都是用户正在操作的Activity


桌面应用把返回键的功能给屏蔽了。只需要重写onBackPressed()方法,不让它实现父类里的方法即可,即:重写为空方法。


Activity的启动模式

启动模式也是在清单文件的activity节点下配置的:

android:launchMode="singleTop"

1.standard

默认标准的启动模式,每次startActivity都是创建一个新的Activity的实例。适用于绝大多数情况。

2.singleTop

单一顶部,如果要开启的Activity在任务栈的顶部已经存在,就不会创建新的实例,而是调用 onNewIntent() 方法

应用场景:浏览器书签(流氓程序员写个for循环,多次弹出是否保存该书签,若该Activity的启动模式设置为singleTop就可避免该现象。)。避免栈顶的Activity被重复的创建,解决用户体验问题。

3.singletask

单一任务栈,Activity只会在任务栈里面存在一个实例如果要激活的Activity在任务栈里面已经存在,就不会创建新的Activity,而是调用 onNewIntent() 方法复用这个已经存在的Activity,并且清空当前Activity任务栈上面所有的Activity

应用场景:浏览器Activity,整个任务栈只有一个实例,节约内存和CPU的目的。

注意:Activity还是运行在当前应用程序的任务栈里面,不会创建新的任务栈。

4.singleInstance

单一实例,整个手机操作系统里面只有一个实例存在。

不同的应用去打开这个Activity,共享、公用同一个Activity。

它会运行在自己单独、独立的任务栈里面,并且任务栈里面只有它一个实例存在。每个Activity都有自己独立的任务栈

应用场景:呼叫来电界面,InCallScreen

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值