Android开发学习之路——Activity Task和Back Stack分析

本文详细探讨了Android开发中的Activity任务(Task)和回退栈(Back Stack),重点关注了不同启动模式如FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_SINGLE_TOP和FLAG_ACTIVITY_CLEAR_TOP的影响及应用,旨在帮助开发者更好地理解和管理Activity的生命周期及导航行为。
摘要由CSDN通过智能技术生成
Android开发学习之路——Activity Task和Back Stack分析
一、概念
(1)首先需要理解Task和Back Stack的含义
            Task,翻译过来就是任务,指的是Activity的集合或者容器,而这个集合/容器呢,则是使用一个栈来进行管理的,这个栈称为Back Stack,栈中Acitvity的顺序则是遵循后进先出的原则,而栈中Activity的顺序是按照他们被打开的顺序来依次存放的。一般,我们只能从栈顶移除或者添加新的Activity,而栈中你的Activity的顺序是固定的,但是也有一些方法可以改变栈内的Activity的顺序,也就是后面要介绍的launchMode和Intent的Flags。
            总结:Task(任务) Activity的容器或者集合,通过Back栈来管理。而栈中Activity的顺序是按照启动Activity的先后来决定的,但是我们可以通过launchMode和Flags来改变顺序。 


(2)为什么会选择Task和 Back Stack来管理Activity而不是其他的数据结构呢?(这里就需要分析Task和Back Stack的特性)
           实际上一个应用包含很多个Activity,而每个Activity都对应了特定的功能,用于给用户操作,而不同的Acitivity可以通过Intent来互相启动。比如说从点击一个app图标开始,首先是启动的Activity,然后主界面Activity,然后点解头像,开始注册Activity,然后登录Activity。如下图 1:

图 1
        在这一过程中该应用一共产生了四个Activity实例,那么如果此时我按返回,应该依次移除上层的Activity直到退出。这里思考,如果是你,你首先想到的是什么数据结构来保存这些?(如果学过数据结构的话,你会很敏感的知道这个很符合栈的结构特点)

        除此意外,一个Acitivty还可以去启动其他应用程序中的Acitivity。比如,在微信聊天中,如果对方给你发一个网址链接,你点击后会在微信打开这个链接,但是这个时候你选择从浏览器打开,就会进入浏览器,当你看完这个链接后按返回退出浏览器,此时你会发现又会回到微信界面中。
        因此无论是同一个应用的Acitivity还是不同应用的Activity,Android都提供了一种Activity管理将他们有效合理的结合在一起。而Task和Back Stack刚好可以满足这一需求。

        那么Task和Back Stack是如何管理Activity的呢?
        
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值