android activity启动流程(全网最全Android开发笔记)

一.先理解栈的概念(放置Activity实例的容器) 1.Task(线性表) 任务栈Task,用来放置Activity实例的容器,先进后出,主要有2个基本操作:压栈和出栈,其所存放的Activity是不支持重新排序的,只能根据压栈和出栈操作更改Activity的顺序。 2.app启动时,系统会为它默认创建一个对应的Task,用来放置根Activity ps:Activity之间可以相互启动,当前应…

一.先了解栈的定义(置放Activity实例的器皿)

1.Task(线性表)

每日任务栈Task,用于置放Activity实例的器皿,先进后出,关键有2个操作过程:压栈和出栈,其所储放的Activity是不可以再次排列的,只有依据压栈和出栈实际操作变更Activity的次序

2.app启动时,系统软件会为它默认设置建立一个相应的Task,用于置放根Activity

ps: Activity中间可以互相启动,现阶段运用的Activity可以去启动别的使用的Activity(照相机),那麼也就是说栈的作用可以把其他app的activity添加到自身app的栈里.

因此Task可以解释为负责全部使用的Activity实例的栈,可是.android5.0以后 跨过程启用activity,这一activity会被放进到一个新的栈中。

二.启动模式(只有依据压栈和出栈实际操作变更Activity的次序,因此是启动模式是以哪一种姿态入栈)

根据在AndroidManifest文档中的属性andorid:launchMode来设定或是根据Intent的flag来设定

1.standard(基本姿态入栈)

默认设置模式。在这个模式下,都是会默认设置建立一个新的实例。因而,在这类模式下,可以有好几个同样的实例,也容许好几个同样Activity累加。应用领域:绝大部分Activity。

2.singleTop(栈顶复用姿态入栈)==FLAG_ACTIVITY_SINGLE_TOP

栈顶复用模式,假如要打开的activity在每日任务栈的顶端早已存有,就不容易建立新的实例,反而是启用 onNewIntent() 方式 。防止栈顶的activity被反复的建立。应用领域:在状态栏点一下接到的通告,随后必须启动一个Activity,这一Activity就可以用singleTop,不然每一次点一下都是会新创建一个Activity。某一情景下持续迅速点一下,启动了2个Activity。假如这个时候待启动的Activity应用 singleTop模式也是可以预防这一Bug的。

3.singleTask(栈内复用姿态入栈)==FLAG_ACTIVITY_CLEAR_TOP

栈内复用模式, activity只能在每日任务栈里边存有一个实例。假如要激话的activity,在每日任务栈里边早已存有,就不容易建立新的activity,反而是复用这一早已出现的activity,启用 onNewIntent() 方式 ,而且清除这一activity每日任务栈上边全部的activity(CLEAR_TOP返回栈顶)。应用领域:大部分App的首页。针对绝大多数运用,在我们在主界面点一下退回按键的情况下全是退出应用,那麼在我们第一次进入主界面以后,主界面坐落于栈底,之后无论大家打开了多少个Activity,只需大家再度返回主界面,都应当应用将主界面Activity上任何的Activity清除的方法来让主界面Activity处在栈顶,而不是往栈顶添加一个主界面Activity的实例,根据这些方法可以确保退出应用时全部的Activity都能报消毁。

4.singleInstance(不进栈)

单一实例模式,全部手机操作系统里边只有一个实例存有。不一样的使用去开启这一activity 共享资源公共的同一个activity。他会运作在自身独立,单独的每日任务栈里边,而且每日任务栈里边仅有他一个实例存有。应用领域:通话拨打电话页面。这类模式的运用状况较为少见,在Launcher中将会应用。或是你确定你需要使Activity只有一个实例。提议慎重应用。

5.FLAG_ACTIVITY_NO_HISTORY

Activity使用这类模式启动Activity,当该Activity启动别的Activity后,该Activity就消失了,不容易保存在Activity栈中。

三.FLAG_ACTIVITY_NEW_TASK

这一特性标准是:设定此情况,最先会搜索是不是具有和被启动的Activity具备同样的两亲性的每日任务栈(即taskAffinity,同一个应用软件中的activity的两亲性一样),如果有,则立即把这个栈总体挪动到前台接待,并维持栈中的情况不会改变,即栈中的activity次序不会改变,要是没有,则新创建一个栈来储放被启动的activity。

1.getTaskId();获得现阶段activity所在的栈

2.同一个应用软件中的activity的两亲性一样(taskAffinity),换句话说 Actviitya intent时setFalg(
Intent.FLAG_ACTIVITY_NEW_TASK)到Activityb 可是Actviitya和Activityb 或是一个栈

在不一样的运用中自动跳转才会建立新的Task。

3.在Activity前后文以外启动Activity必须给Intent设定FLAG_ACTIVITY_NEW_TASK标示,要不然会报出现异常。

四 FLAG_ACTIVITY_CLEAR_TASK(务必和FLAG_ACTIVITY_NEW_TASK一起应用)

清除栈内activity,只留有这一activity

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月6日 下午1:36
下一篇 2022年5月6日 下午1:38

相关推荐

  • 小米盒子连不上wifi是怎么回事,附解决方法汇总

    小米电视盒子增强版一直被广大米友们推崇着,但是总会有一些问题出现,比如无法连接外网,重启路由器、盒子恢复出厂设置、删除连接再重新连接路由等。所有有网友写出了如下的教程,针对不能连接外网这一问题展开的讲解。 故障现象 家里使用小米路由,盒子一直使用正常。前几天出现不能连接外网的现象,盒子自带的所有资源无法播放。可是内网连接正常,蓝牙连接也正常。 既然能连接上路由,那就不会出现问题。可是打开任意一个视…

    2022年8月6日
    3.0K0
  • 电脑如何录屏,电脑录屏的4个方法

    如果不下载第三方录屏工具,你可以为电脑录屏吗?今天小编教你如何调用电脑上的录屏工具,让你随时随地都能为电脑录屏。 一、电脑端录屏 1、步骤记录器 首先我们需要将电脑打开,然后同时按下键盘上的【开始】与【R】键,然后在运行框里面输入【psr.exe】,这样就能将电脑上的录屏工具调用起来,最后就能为电脑录屏了。 2、PPT录屏功能 如果你的电脑上还装了office软件,那么也可以使用PPT里面的录屏功…

    2022年7月18日
    840
  • 永久删除的文件怎么恢复,教你最简单快速的一招

    我相信有不少网友都喜欢把一些重要资料放到桌面上,然后过一段时间了,看到桌面乱七八糟的,就实施一轮狂删操作。等操作完后,发现重要的文件也被删除了,重要的是在回收站也删除了,即永久删除!这下怀具了,电脑操作上,有没有后悔药食的?今天我们为大家带来恢复永久删除文件的教程! 第一步:我们需要下载一款比较靠谱的文件恢复软件,大家可以关注我们并私信,回复“恢复软件”即可获得免费恢复软件下载地址。 第二步:下载…

    2022年9月29日
    470
  • 学生一天怎么快速赚钱,学生赚钱最快的方法分享

    继上一次的文章发出发现大家疫情期间在家都在想办法赚点零花钱,但是上次发文大家反馈说文章比较笼统,不太具体,所以我就据需给大家分享点自己在学校通过“兼职”实现财务自由的途径。 知识变现 首先自己生活在社会上,有很多方面是我们自己所不了解的,未曾接触过的领域,但有时会遇到问题也就是瓶颈,一般都是找度娘,但是,现在有很多新兴行业,其中就包括了“知识变现的平台”通过自己了解的领域,解决别人的瓶颈从而获得报…

    2022年8月12日
    570
  • qt时间戳转换(qt时间戳转换日期格式)

    猜数字游戏 整体流程:1.电脑会生成一个随机数2.猜数字rand()需要调用#include<stdlib.h>头文件使用time()函数需要引用头文件#include<time.h> 用时间戳生成随机数——猜数字游戏 用rand()函数生成随机数:在调用rand()函数生成随机数之前,需要使用srand()函数来为rand()函数设置随机数的起点,用时间戳作为srand函…

    2022年5月11日
    970
  • 怎么做好品牌推广,品牌推广营销要点

    1、品牌是什么? 品牌是人们对企业提供的产品、服务、价值观等有形或无形资产一种认知或印象。 2、品牌运营是什么? 品牌运营其实就是企业以品牌为核心所做的一系列综合性策划,它是一个复杂的系统工程 3、如何做品牌运营? (1)讲故事 年糕妈妈创业故事 通过将创始人或者公司研发产品的过程等包装成一个感人的故事,然后不断的去向受众讲这个故事的方式来传播品牌。通常像创始人屌丝逆袭,留学海归放弃亿万身家回国创…

    2022年7月25日
    700
  • 静态网站建设用什么框架,html静态网页制作教程

    想要拥有自己的网站,很简单,看完这篇文章,带你体验一遍建站过程,看完之后自己再来尝试建站,非常的简单哦 首先我们需要注册域名,域名这东西就好像我们自己的名字,选错了会害自己一辈子一样的的道理,所以我们一定要挑选简单,容易记,跟自己的网站/行业相关以及符合自己心意的域名 阿里云域名注册首页 选好域名之后,我们来选主机,在这里提示一句,虚拟机一定不要用免费的,这是过来人的经验,小型网站为了节约经费,一…

    2022年8月8日
    770
  • 电瓶车什么牌子好,公认质量最好最耐骑的五款电瓶车

    现如今,随着化石燃料的不断枯竭,以及环境污染问题的日益严重,化石能源的车辆已经不那么受欢迎了,而取代之的是电动的各种交通工具,因为电力源是清洁能源,对于环境的污染问题首先没那么大,其次,电力的来源也广,不像化石能源很有限,只要能开发出好的发电设施,电力就是最可靠的能源。 而在如今的社会中,早几年的摩托车已经很少见了,取而代之的是电瓶车,这几年,电动车的行业如雨后春笋,而电瓶车的牌子也越来越多,那么…

    2022年10月5日
    3120
  • 苹果7怎么截长图片,手把手教你如何截取长图

    iPhone如何进行长图截屏?没有谁愿意为了截一个图,花大笔时间进行后期处理,更何况是将手机截图放到电脑上来处理。好在已有一款应用可以帮助你完成这份工作,它无需花费大量无谓的时间,不需要连接电脑,只要在iOS设备上就能轻松完成——它就是Piiic(长图)。 从名字上就可以看出来,这是一个把图片(Pic)变长的应用,其开发者就是目前iOS上最强大的第三方微博客户端VVebo的作者Johnil。长图支…

    2022年9月10日
    1980
  • 如何做网络营销推广,网络营销推广的特点及建议

    互联网时代靠什么才能取得成功?网络营销应采用哪些方式?如何选择适合自己的网络推广方式?实操中的细节有哪些? 很多企业在做网上销售时,很容易犯的一个毛病,就是重销售,轻服务,结果造成一锤子买卖居多,甚至会出现有关产品、售后服务纠纷等。这都是企业需要摈弃的。要想长久地利用互联网做好产品销售,线下的服务更需要加强和规范。 不论你是否承认,网络营销都以不可逆转的趋势冲撞着人们的消费理念,网上销售也必然会成…

    2022年6月3日
    630

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信