首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 5.0打开的活动加上另一个活动会杀死第一个活动

Android 5.0引入了任务和返回栈的概念,当一个活动启动另一个活动时,系统会将第一个活动放入返回栈中,并将第二个活动置于前台。当用户按下返回按钮时,系统会从返回栈中弹出第二个活动,并将其恢复到前台。

然而,如果在启动第二个活动时使用了FLAG_ACTIVITY_NEW_TASK标志,系统会创建一个新的任务,并将第一个活动和第二个活动分别放入两个不同的任务中。在这种情况下,当用户按下返回按钮时,系统会将用户返回到第一个活动所在的任务中。

这种行为可以通过在启动第二个活动时使用FLAG_ACTIVITY_CLEAR_TOP标志来改变。这样做会将第一个活动之上的所有活动都从返回栈中移除,并将第二个活动置于前台。这样,当用户按下返回按钮时,系统会直接返回到第一个活动。

总结起来,Android 5.0打开的活动加上另一个活动会有以下两种情况:

  1. 如果没有使用FLAG_ACTIVITY_NEW_TASK标志,第一个活动会被暂停并放入返回栈中,第二个活动会置于前台。用户按下返回按钮时,系统会将第二个活动弹出返回栈并恢复第一个活动。
  2. 如果使用了FLAG_ACTIVITY_NEW_TASK标志,系统会创建一个新的任务,并将第一个活动和第二个活动分别放入两个不同的任务中。用户按下返回按钮时,系统会将用户返回到第一个活动所在的任务中。

这种行为在Android开发中非常常见,特别是在应用程序的导航和界面切换中。在实际应用中,可以根据具体需求选择适合的启动模式和标志来控制活动的行为。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

16.Android-activity生命周期与启动模式

暂停活动是完全活动(它维护所有状态和成员信息,并保持与窗口管理器连接),但是在内存极低情况下,系统可能终止它。...比如:当前APP出现一个非全尺寸对话框 停止状态 如果一个活动完全被另一个活动遮挡住了,它就会被停止。...它仍然保留所有的状态和成员信息,但是,它对用户来说不再可见,所以它窗口是隐藏,当在其他地方需要内存时,会被系统杀死。...) : activity被系统杀死或者调用finish方法主动退出,那么会调用该方法, 一般在这个方法中用于释放资源, 2.activity启动模式 在Android开发中,如果我们通过一个按钮重复打开...Manifest中配置如下: android:launchMode=" singleTop" 用于该模式常见activity比如有: 二维码扫码界面activity(避免打开多个相同界面) 2.3

55910

Android基础总结(2)——活动Activity

还有一点要注意android.intent.category.DEFAULT是默认category,在调用startActivity()方法时,系统自动添加到Intent种类筛选中去。...如果要返回数据给上一个活动,则用startActivityForResult()方法来启动费另一个活动,该方法接收两个参数,第一个是Intent,第二个是请求码,用于在之后回调中判断数据来源,该请求码只要是一个唯一值就可以了...此时活动一定位于返回栈栈顶,并且处于运行状态。 onPause():在系统准备去启动或恢复另一个活动时候调用。...例如:我们希望之前在一个文本框中输入了数据,希望下次打开时仍然保持该数据。...singleInstance:该模式下启用一个新返回栈来管理这个活动。(例如我们想实现其他程序和我们程序可以共享一个活动,则应该用该模式启动活动)。

1.1K90

7.Activity

(具体标准形式)   例如:手机中浏览器: 有很多种(360,google,...)进行开发手机浏览器厂商肯定要遵循谷歌标准用户在打开某个网页时,进行提示你选择哪种浏览器!!...data = new Intent(); data.putExtra("phone", phone); //设置一个结果数据,数据返回给调用者//第一个参数用于向上一个活动返回处理结果,一般只使用...内存不足 内存不足时,系统优先杀死后台Activity所在进程,都杀光了,如果内存还是不足,那么就会杀死暂停状态Activity所在进程,如果还是不够,有可能杀死前台进程 如果有多个后台进程,在选择杀死目标时...每个保存方法需要传入两个参数,第一个参数是键,用于后面从 Bundle中取值,第二个参数是真正要保存内容。...任务栈 应用运行过程中,内存中可能会打开多个Activity,那么所有打开Activity都会被保存在Activity任务栈 栈:后进先出,最先进栈,就会最后出栈 Activity启动模式就是修改任务栈排列情况

1.2K150

Android后台杀死系列之三:LowMemoryKiller原理(4.3-6.0)

App操作影响进程优先级 本篇是Android后台杀死系列第三篇,前面两篇已经对后台杀死注意事项,杀死恢复机制做了分析,本篇主要讲解Android后台杀死原理。...有关保存和恢复状态、或者异常杀死恢复可以参考前两篇 文章。 空进程 不含任何活动应用组件进程。...根据进程中当前活动组件重要程度,Android会将进程评定为它可能达到最高级别。例如,如果某进程托管着服务和可见 Activity,则会将此进程评定为可见进程,而不是服务进程。...,比如修改进程优先级,在Android家族,5.0之前系统是AMS进程直接修改5.0之后,是修改优先级操作被封装成了一个独立服务-lmkd,lmkd服务位于用户空间,其作用层次同AMS、WMS...oomAdj,以上是针对Android4.3系统分析,之后会看一下5.0之后系统是如何实现

1.6K50

速读原著-Android应用开发入门教程(Android应用程序概念性描述)

系统中通常有很多这样进程在运行,因此要将这些进程保存在 LRU 列表中,以确保当内存不足时用户最近看到进程最后一个被杀死。 (5)空(Empty)进程 不包含任何处于活动状态应用程序组件。...活动生命周期 活动Android 中最重要、最基础组件,用户在界面上看到一个个可以切换屏幕界面就是 Android活动活动生命周期如图 1 所示。 ?...活动被“覆盖”情景:Android 活动一般都占据一个完整屏幕,从当前活动启动另外一个活动时,另一个活动将被启动到前台(Foreground),当前活动转入后台(Background),这时活动...如果系统缺少内存时,也杀死(kill)后台活动,其中优先杀死不可见活动,可见活动一般不会被杀死。 2....使用 bindService 运行服务情景:使用这种方法启动服务,调用者(也就是服务客户端)将获得和服务交互类,通过其调用时服务相关内容处于活动状态。 3.

96910

Android实现进程保活方案解析

随着 Android 系统发展,这一切都在往好方向演变。 Android 5.0 以下,系统杀进程以 uid为标识,通过杀死整个进程组来杀进程。...Android 6.0 引入了待机模式(doze),一旦用户拔下设备电源插头,并在屏幕关闭后一段时间内使其保持不活动状态,设备进入低电耗模式,在该模式下设备尝试让系统保持休眠状态。...Android 8.0 进一步加强了应用后台执行限制:一旦应用进入已缓存状态时,如果没有活动组件,系统将解除应用具有的所有唤醒锁。...随着Android系统日渐完善,单单通过自己拉活自己逐渐变得不可能了; 因此后面的所谓「保活」基本上是两条路: 提升进程优先级,让系统不要轻易杀死进程; App间关联唤醒,打开一个App时候启动、...多个app关联唤醒,就像BAT全家桶,打开一个App时候启动、唤醒其他App,包括一些第三方推送也是,对于大多数单独app,比较难以实现。

8.5K30

Activity状态和生命周期方法

Activity活动状态由Android以Activity栈形式管理,当前活动Activity位于栈顶。...随着不同应用运行,每个Activity都有可能从活动状态转入非活动状态,也可能从非活动状态转入活动状态。...然而这些对用户来说都是不可见,如果当系统内存不足时,这个Activity很容易被杀死。...另外当Activity处于运行状态时,Android会尽可能地保持它运行,即使出现内存不足情况,Android杀死栈底部Activity,来确保可见Activity正常运行。...其中第一个Activity界面布局非常简单,只包含2个按钮,其中第一个按钮作用主要是启动第二个Activity,第二个按钮作用是退出当前Activity。

1.7K60

Android开发基础系列】Android开发学习专题

如果系统缺少内存时,也杀死(kill)后台Activity,其中优先杀死不可见Activity,可见Activity一般不会被杀死。     2....使用bindService运行服务情景:使用这种方法启动服务,调用者(也就是服务客户端)将获得和服务交互类,通过其调用时服务相关内容处于活动状态。     ...两个活动名称分别为Forwarding和ForwardTarget,由于第二个活动没有intent-filter,因此在程序中只能由第一个活动来启动。...本例中使用了finish()函数表示当前活动结束,这样在第二个活动(ForwardTarget)启动时,第一个活动(Forward)已经不存在了。...如果没有调用finish()函数,第二个活动启动时,第一个活动就处于OnPause状态,当第二个活动退出后,第一个活动重新出现,也就是会调用活动onResume()函数。

28420

探究活动Activity(2)界面跳转及生命周期

首先构建出一个Intent,传入FirstActivity.this,作为上下文参数,传入SecondActivity.class作为目标活动,意思就是我们在FirstActivity这个活动基础上打开...onResume() 这个方法在活动准备好和用户进行交互时候调用。此时活动处于运行状态。 onPause() 这个方法在系统准备去启动或恢复另一个活动时候调用。...,就是指定按钮不同,及跳转页面不同而已,现在我们在FirstActivity中添加那些回调方法,然后Log日志打印,来看看它生命活动打开FirstActivity,图片如下: ?...我们现在在SecondActivity布局页面,可以看到先执行onPause(),再执行onStop()。我们这个时候再按返回键BACK返回到第一个界面,再看一下执行那些回调方法。 ?...现在只是一个活动声明周期,如果我们给SecondActivity也加上打印来看看,会是怎么执行,SecondActivity代码如下。

93120

Android 进程回收之LowMemoryKiller原理篇

在前面的文章Android进程保活一文中,对于LowMemoryKiller概念做了简单提及。LowMemoryKiller简称低内存杀死机制。...为了使系统资源在进程缓存和底层内核缓存之间保持平衡,系统往往终止这些进程。 根据进程中当前活动组件重要程度,Android会对进程优先级进行评定。...APP中很多操作都可能影响进程列表优先级,比如退到后台、移到前台等,都会潜在影响进程优先级,我们知道Lowmemorykiller是通过遍历内核进程结构体队列,选择优先级低杀死,那么APP...,比如修改进程优先级,在Android家族,5.0之前系统是AMS进程直接修改5.0之后,是修改优先级操作被封装成了一个独立服务-lmkd,lmkd服务位于用户空间,其作用层次同AMS、WMS...Android 5.0进程优先级更新-LMKD服务 Android5.0将设置进程优先级入口封装成了一个独立服务lmkd服务,AMS不再直接访问proc文件系统,而是通过lmkd服务来进行设置,从

2.7K70

Android 进程回收之LowMemoryKiller原理篇

在前面的文章Android进程保活一文中,对于LowMemoryKiller概念做了简单提及。LowMemoryKiller简称低内存杀死机制。...为了使系统资源在进程缓存和底层内核缓存之间保持平衡,系统往往终止这些进程。 根据进程中当前活动组件重要程度,Android会对进程优先级进行评定。...APP中很多操作都可能影响进程列表优先级,比如退到后台、移到前台等,都会潜在影响进程优先级,我们知道Lowmemorykiller是通过遍历内核进程结构体队列,选择优先级低杀死,那么APP...,比如修改进程优先级,在Android家族,5.0之前系统是AMS进程直接修改5.0之后,是修改优先级操作被封装成了一个独立服务-lmkd,lmkd服务位于用户空间,其作用层次同AMS、WMS...Android 5.0进程优先级更新-LMKD服务 Android5.0将设置进程优先级入口封装成了一个独立服务lmkd服务,AMS不再直接访问proc文件系统,而是通过lmkd服务来进行设置,从

2.4K111

Android编程权威指南》之UI状态保存与恢复篇

MainActivity和QuizViewModel经历设备旋转 运行GeoQuiz应用日志: 初次打开 旋转设备日志:(可以看出viewmodel并未重建,而是从内存中直接取第一次创建) 旋转后...当某个对象强引用另一个要被销毁对象时,内存泄漏就会发生。这样强引用阻止垃圾回收器从内存里清理对象。设备配置改变带来内存泄漏是常见问题。...“杀死时候,帮用户保存一些不是很大关键数据,从而在再次加载app时候恢复状态。...要测试系统内存不够杀死应用,进入开发者选项,将不保留活动开启,那么在应用启动后,点击了home键,系统就是自动去杀死app了。...(后续学) ViewModel 始终还是对内存数据进行操作,所以速度上来说会占优势,加上书中GeoQuiz应用例子,题目都是硬编码,不是从网络获取,而且数据也不多,不需要数据库来存储,因此对于此应用来说

58710

Android内存管理(六)Android对Linux系统内存管理机制进行优化

那为什么内存少时候运行大型程序慢呢,原因是:在内存剩余不多时打开大型程序触发系统自身进程调度策略,这是十分消耗系统资源操作,特别是在一个程序频繁向系统申请内存时候。...这种情况下系统并不会关闭所有打开进程,而是选择性关闭,频繁调度自然拖慢系统。...为了确定在内存不足时终止哪些进程,Android根据进程中正在运行组件以及这些组件状态,将每个进程放入 “重要性层次结构” 中。必要时,系统会首先杀死重要性最低进程,以此类推,以回收系统资源。...保留这种进程唯一目的是用作缓存(为了更加有效使用内存而不是完全释放掉),以缩短下次启动应用程序所需时间,因为启动一个新进程也是需要代价。只要有需要,Android随时杀死这些进程。...Android系统如何评定进程优先级 根据进程中当前活动组件重要程度,Android 会将进程评定为它可能达到最高级别。

1.5K10

Android四大组件之Activity详解

这是生命周期第一个方法。在这个方法中,可以做一些初始化工作,比如调用setContentView去加载界面布局资源,初始化Activity所需数据。...这种情形一般是用户行为导致,比如用户按Home键切换到桌面或打开另一个Activity,接着用户又回到了这个Actvity。...(3) 后台Activity——已经被暂停Activity,比如执行了onStop,优先级最低。 当系统内存不足时,按照上述优先级从低到高去杀死目标Activity所在进程。...再来看看Activity三种运行状态 ①Resumed(活动状态) 又叫Running状态,这个Activity正在屏幕上显示,并且有用户焦点。...比如有另一个非全屏或者透明Activity是Resumed状态,没有完全遮盖这个Activity。

54720

Android入门教程之Activity(生命周期,启动...)

android.intent.category.LAUNCHER 表示可以在手机“桌面”上看到应用图标。 设置了这 2 个标签,决定了这个 activity 是用户点击应用图标时第一个启动界面。...onPause()方法:系统准备去启动或恢复另一个活动时调用。表示Activity正在停止,此时可做存储数据,停止动画等操作。 onStop()方法:在活动完全不可见时候调用。...生命周期切换过程 启动一个Activity onCreate->onStart->onResume 当一个Activity打开另一个Activity都会回调哪些方法,如果ActivityB是完全透明呢...后台Activity:已经被暂停Activity,比如执行了onStop,优先级最低。 当系统内存不足,按照优先级顺序从低到高去杀死目标Activity所在进程。 5....优先级低Activity在内存不足被回收后怎样做可以恢复到销毁前状态? 优先级低 Activity 在内存不足被回收后重新打开(横竖屏切换过程中)引发Activity重建。

88400

超详细,Android AMS面试攻略,带你突破面试难关

活动状态管理: 当应用程序处于前台活动状态时,AMS监控用户与应用程序交互,比如按下Home键、切换到其他应用等。...后台状态管理: 当应用程序进入后台时,AMS根据系统内存情况来决定是否清理后台进程。如果系统内存不足,AMS根据应用程序优先级情况杀死一些后台进程,以释放内存资源。...任务栈调度: 当用户从一个应用程序切换到另一个应用程序时,AMS根据应用程序启动模式(standard、singleTop、singleTask、singleInstance)来决定如何调度任务栈。...通常情况下,系统保持至少一个前台进程,以确保用户体验;当系统内存不足时,AMS优先杀死后台进程,以释放内存资源。 其它 问题: Android内存管理机制是怎样?AMS是如何参与其中?...内存压力: 当系统内存不足时,Android系统采取一系列措施来减少内存压力,比如杀死一些后台进程、清理缓存数据等。

14510

Android基础部分再学习---activity生命周期

唯一需要考虑就是,系统在内存不足情况下,杀死在Paused或者Stopped状态下Activity。...当一个Activity在Resumed状态下,它是不会因内存不够而被系统直接杀死(在极端情况下也有可能被杀死,但是一般不会考虑这种情况)。...3.如何强制性关闭一个activity Android下结束进程方法   一、结束一个活动Activity   要主动结束一个活动Activity,使用finish方法,而且这个方法最后会调用Activity...因此,这两个方法最好使用在出现异常时候! 三、结束另一个进程   要通过一个进程去结束另一个进程。...在之前SDK版本中,一直使用方法restartPackage(packageName)方法,但是在Android开发文档中介绍说,这个函数导致一些问题( the previous behavior

85220

《第一行代码》读书笔记1

另外,Android运行时库中还包含了Dalvik虚拟机(5.0系统之后改为ART运行环境),它使得每一个Android应用都能运行在独立进程当中,并且拥有一个自己Dalvik虚拟机实例。...搭建开发环境下载JDK下载IDEA下载Android SDK,通过idea下载打开idea,新建一个项目,选择android,点击install SDK进行下载。...分析项目如何运行1 打开AndroidMainifest.xml图片2 分析活动代码图片继承AppCompatActivity,这是一种向下兼容Activity,可以将Activity在各个系统版本中增加特性和功能最低兼容到...勾选LauncherActivity表示自动将新创建活动设置为当前项目的主活动。...项目中添加任何资源都会在R文件中生成一个相应资源id。注册活动以及配置主活动所有的活动都要在AndroidManifest.xml中进行注册才能生效。Idea自动帮忙注册。

31740

安卓入门-第二章-探究活动

一、引出  通过上一章学习,你已经成功创建了你第一个Android项目。不过仅仅满足于此显然是不够,是时候学点新东西了。...作为你导师,我有义务帮你制定好后面的学习路线,那么今天我们应该从哪儿入手呢?现在你可以想象一下,假如你已经写出了一个非常优秀应用程序,然后推荐给你第一个用户,你从哪里开始介绍呢?...,即点击桌面应用程序图标时首先打开就是这个活动。...需要注意是,虽然我们声明了ThirdActivity是可以响应打开网页Intent,但实际上这个活动并没有加载并显示网页功能,所以在真正项目中尽量不要出现这种有可能误导用户行为,不然让用户对我们应用产生负面的印象...你可能觉得既然活动已经不在栈顶了,还怎么可见呢?这是因为并不是每一个活动都会占满整个屏幕,比如对话框形式活动只会占用屏幕中间部分区域,你很快就会在后面看到这种活动

2.9K20
领券