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

【Android 应用开发】Activity 返回堆栈清除操作 ( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置 )

返回堆栈 默认操作 II . 返回堆栈 保留所有元素操作 III . 返回堆栈 清除除根元素外所有元素操作 IV . 返回堆栈 清除指定 Activity V . 总结 I ....返回堆栈 默认操作 ---- 任务进入后台 然后 恢复前台运行 返回堆栈 默认处理机制 : ① 长时间挂起任务 : 如果任务长时间在后台挂起 , 系统会清除 该任务返回堆栈中除 根 Activity...( 栈底元素 ) 之外其它 Activity 界面 ; ② 短时间挂起后立刻返回 : 如果任务只是短时间进入后台 , 那么任务中所有Activity 都会保留 ; 是否保留任务返回堆栈 , 依据是...设置 android:alwaysRetainTaskState 属性为 true 效果 : 不管 任务在后台挂起多长时间 , 返回堆栈都会保留所有Activity ; <activity android...总结 ---- 返回堆栈清除管理 总结 : ① 默认状态下 : 任务进入后台 , 如果超过一定时间 , 就会清除除根 Activity 之外其它元素 , 短时间内进入前台 , 会恢复完整返回堆栈 ;

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

【Android 应用开发】Activity 返回堆栈管理 ( 阶段总结 | 任务栈管理 | 返回堆栈 | 清除返回堆栈 | 亲和性 | 启动模式补充 | standard | singleTop )

文章目录 一、 安卓应用任务栈管理 二、 任务与返回堆栈回顾 三、 返回堆栈清除 四、 关于亲和性回顾 五、 Activity 启动模式 LaunchMode 补充 ( standard | singleTop..., 一个任务对应一个返回堆栈 ; 三、 返回堆栈清除 ---- 【Android 应用开发】Activity 返回堆栈清除操作 ( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置...) 博客中讲解了清除返回堆栈一系列设置 ; 任务栈清除控制 : 在任务栈转为后台后 , 在转回前台 , 任务栈行为设置 ; ① 默认状态任务栈操作 : 默认状态下 , 后台任务返回堆栈过 30...模式分组 : ① 常用启动模式 : 其中 standard , singleTop 是经常使用 , 功能类似 ; Activity 实例位置 : 上述两种启动模式 Activity 可以放在任何堆栈任何位置...一般情况下不使用 , 只有开发特殊 APP 时才用到这两个启动模式 ; Activity 实例位置 : 上述两种启动模式 Activity 只能处于返回堆栈根元素位置 , 只能在堆栈最下面 ; Activity

1.7K10

【Android 应用开发】Activity 返回堆栈管理 ( 栈内复用模式 singleTask | 单实例模式 singleInstance )

) Activity 实例在返回堆栈位置 ---- singleTask 启动模式 Activity 只能在任务返回堆栈最底部 , 即栈底 , 根 Activity 位置 , 其在返回堆栈中...) , 共有五种处理状况 ; 设备当前所有任务栈中没有 Activity 实例 : 直接创建新任务 , 创建新 Activity 实例放入该任务返回堆栈中 ; 前台任务栈有该 Activity 实例..., 同时设置 FLAG_ACTIVITY_BROUGHT_TO_FRONT 标志位 , 清空除栈底根 Activity 之外其它 Activity 实例 ; 新 Intent 意图 : 本次启动界面将使用...Activity 启动标志位了 ; 新 Intent 意图 : 本次启动界面将使用 Activity 启动 Intent ; 不设置 Intent 标志 : 该情况下 不设置 Activity...栈内复用模式 Activity 界面总结 : ① 没有 Activity 实例 : 如果当前设备所有的任务栈中都没有该 Activity 实例 , 那么就启动 Activity 实例 , 放入一个新任务栈中

1.1K10

Android常问面试题,赶紧收藏一波

将存活对象一次性复制到另一块Survivor上,如果另一块Survivor空间不足,则使用分配担保机制存入老年代 标记—整理 Mark—Compact 过程:所有存活对象向一端移动,然后清除掉边界以外内存...03 简述App启动过程 App启动一般分为两种: 冷启动:当应用启动时候,后台没有当前应用进程,这时系统会创建一个新进程分配给应用。...AMS得到Launcher通知,就会新建一个Task去准备启动Activity通过Binder机制通知Launcher进入Paused状态; Launcher得到消息,就会直接挂起通过...Binder告诉AMS我已经Paused了;AMS知道了Launcher已经挂起之后,就可以放心为新Activity准备启动工作了,首先,APP肯定需要一个新进程去进行运行,所以需要创建一个新进程...04 四种LaunchMode及其使用场景 standard 模式 这是默认模式,每次激活Activity时都会创建Activity实例,放入任务栈中。使用场景:大多数Activity

58620

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

有时候我们要进行一些跨应用操作,比如拍照、P 图、分享到朋友圈,这一系列操作中会有多个应用 Activity 互相调用,安卓系统是如何管理这些不同应用 Activity 呢?...答案你已经猜到了,就是使用 Task。 Task 是指在执行特定任务时与用户交互一系列 Activity。 这些 Activity 按照各自打开顺序排列在堆栈中。...如果应用 Task 不存在(应用最近未曾使用),则会创建一个新 Task,并且该应用“主”Activity 将作为堆栈Activity 打开。...如果用户稍后通过选择开始任务启动器图标来恢复任务,则该 Task 将出现在前台恢复执行堆栈顶部 Activity。 注意: 后台可以同时运行多个任务。...如果当前 Task 已经有要启动 Activity,就不会直接创建新,但是还要分下面两种情况 如果这个 Activity 启动模式是 standard 并且也没有使用 FLAG_ACTIVITY_SINGLE_TOP

1.5K50

android学习笔记----启动模式与任务栈(Task)

此外,实例可以是多个任务成员,也可以是一个任务中多个实例。 否。在发起意图同一任务中打开 是 singleTop 否 与标准完全相同,但如果活动位于Task堆栈顶部,则使用现有实例。 否。...,可以使用NavUtils类静态方法navigateUpFromSameTask()。...当您调用此方法时,它将完成当前活动启动(或恢复)相应父活动。如果目标父活动位于任务后台堆栈中,则会将其提前。...它提出方式取决于父活动是否能够处理onNewIntent()调用: 如果父活动启动模式,或者向上意图包含FLAG_ACTIVITY_CLEAR_TOP,则父活动将被带到堆栈顶部...如果父活动具有启动模式,并且向上意图不包含FLAG_ACTIVITY_CLEAR_TOP,则从堆栈弹出父活动,并在堆栈顶部创建该活动新实例以接收意图

38410

已中招!Android 基础面试常常吊死在这几个问题上……

第三步:编译, androidapkbuilder ,它获取所有输入构建 apk(android打包密钥)文件。 应聘者:学到了,学到了!...现在,如果我们以启动模式为 “Standard” 再次启动B ,则新堆栈将为A->B-> C->B; SingleTop:与标准 Standard ,除了堆栈顶部存在 Activity 先前实例之外,...它不会创建新实例,而是将意图发送给 Activity 现有实例。...如果我们以启动模式为 “ singleInstance” 再次启动 ActivityB ,则新活动堆栈将为: 任务1 :A->B-> C 任务2 :D 10、面试官:当旋转屏幕时,Activity如何响应...因此,例如,如果在Activity启动AsyncTask且用户旋转设备,则该Activity将被销毁(创建一个新Activity实例),但AsyncTask不会死亡,而是继续生存直到完成; 当AsyncTask

2K20

安全退出app,activoty栈管理

(之前看小强也写过一篇,这里通过自身分析完整总结一下以下6种方案,加上一个DEMO便于大家了解大体流程) 在android用户交互中,按钮触发意图(Intent)跳转会为你重新打开新一个界面活动...通过IntentFlags来控制堆栈去解决 android中,每打开一个Activity,便会在栈中加入一个Activity,当该Activity被摧毁后,栈中便移除了它,并且栈中Activity...B时将会清除该进程空间所有Activity。...方案2 方法:通过堆栈管理器去管理 思路:通过堆栈管理器,对Stack进存储Activity进行操作(推入,推出,弹出) 代码: public class StackManager {  ...中调用带请求码Intent跳转意图

918100

APP,Activity启动速度优化

先讲点题外话 简述Activity几种启动模式 standard标准启动模式,也是Activity启动模式,以这种模式启动Activity会新new一个Activity对象放入Activity堆栈...,而是直接回调这个ActivityonNewIntent singleTask模式,在一个Activity堆栈中只允许存在一个Activity实例,比如启动一个Activity,如果这个Activity...显示出来,并回调onNewIntent方法 singleInstance模式是只允许有一个实例,而且是运行在自己单独一个Activity堆栈,并且这个堆栈只允许有这个Activity,不能有其他...Activity 如何计算Activity启动时间 如果你手机有root过,那么就可以切换到system_process进程查看ActivityManager打印系统log: 09-15 22:58...Intent里面的IntentFilter;然后再监测Activity所在进程是否有启动,没有启动的话就fock一个进程出来接下去再做初始化Application调用相关方法,例如onCreate,

1.5K30

AndroidMainifest标签说明2——<activity>

这个属性用来标记一个Activity实例在当前应用退居后台后,能否从启动那个task移动到有共同affinitytask,“true”表示能够移动,“false”表示它必须呆在当前应用task中...用户从主选单再次选择该应用时,系统就会对该应用task进行清理。除了根Activity,其它Activity都会被清除出栈,可是假设在根Activity中设置了此属性之后。...activity实例在目标栈中,设置Intent路径。...系统读取这个属性,以确定哪些活动时应開始使用按下button在操作栏。该系统还能够使用此信息来综合与TaskStackBuilder回堆栈活动。...android:permission 权限名称,客户必须启动活动或让它回复意图

1.5K00

系统app调试以及jdb调试

本文不打算拿系统app来讲解如何调试,不过会使用这里调式技巧,那么调试系统app也很简单了(系统app源码大都涉密,不方便拿来举例,AOSP源码例外)。...] | 转储线程堆栈 wherei [ | all] | 转储线程堆栈, 以及 pc 信息 up [n frames] | 上移线程堆栈 down [n frames] | 下移线程堆栈 kill...向字段/变量/数组元素分配新值 locals | 输出当前堆栈帧中所有本地变量 classes | 列出当前已知类 class | 显示已命名类详细资料 methods | 列出类方法 fields...[(argument_type,...)] | 清除方法中断点 clear : | 清除行中断点 clear | 列出断点 catch [uncaught caught all] | 出现指定异常错误时中断...| 除非指定 ‘go’, 否则挂起所有线程 trace [go] method exit exits [thread] | 跟踪当前方法退出, 或者所有方法退出 | 除非指定 ‘go’, 否则挂起所有线程

2.3K00

抖音 Android 性能优化系列:Java 内存优化篇

Android 端 HPORF 获取依赖原生 Debug.dumpHporf,dump 过程会挂起主线程导致明显卡顿,线下使用体验较差,经常会有研发反馈影响测试。...线下:dump 策略配置较为激进,在 OOM、内存触顶、内存激增、监测 Activity、Fragment 泄漏数量达到一定阈值多种场景下触发 dump,实时在端上分析上传至后台并在本地自动生成 html...Manager 使用 HashMap 存储了所有的视频对象,最初方案里面没有对内存大小进行限制且没有清除逻辑,随着使用时间增加而不断膨胀,最终出现 OOM 异常。...在退出 App 时,清除 Manager 磁盘缓存,避免磁盘空间占用不断增长。 图片 关于图片优化,我们主要从图片库管理和图片本身优化两个方面思考。同时对不合理图片使用也做了兜底和监控。...通过使用编译时字节码替换方式,替换所有 StringBuilder append 方法使用自定义实现,优化后首次安装首页 Feed 滑动 1min FPS 提升 1 帧/S,非首次安装启动,滑动

1.9K40

Android 面试之必问性能优化

下而冷启动则是最慢,因为它会涉及很多进程创建,下面是冷启动相关任务流程: 在这里插入图片描述 1.1.2 视觉优化 在冷启动模式下,系统会启动三个任务: 加载启动应用程序。...启动后立即显示应用程序空白启动窗口。 创建应用程序进程。 一旦系统创建应用程序进程,应用程序进程就会进入下一阶段,完成如下一些事情。...ThisTime:最后一个Activity启动耗时 TotalTime:所有Activity启动耗时 WaitTime:AMS启动Activity总耗时 日志方式 埋点方式是另一种统计线上时间方式,...标记整理算法 标记整理算法标记过程和标记清除算法一样,但清除过程并不是对可回收对象直接清理,而是将所有存活对象像一端移动,然后集中清理到端边界以外内存。...最后,我们将申请资源到堆栈信息保存起来。当我们触发某个规则上报问题时候,可以将收集到堆栈信息、电池是否充电、CPU 信息、应用前后台时间等辅助信息上传到后台即可。

87400

Android 面试之必问性能优化

下而冷启动则是最慢,因为它会涉及很多进程创建,下面是冷启动相关任务流程: [在这里插入图片描述] 1.1.2 视觉优化 在冷启动模式下,系统会启动三个任务: 加载启动应用程序。...启动后立即显示应用程序空白启动窗口。 创建应用程序进程。 一旦系统创建应用程序进程,应用程序进程就会进入下一阶段,完成如下一些事情。...ThisTime:最后一个Activity启动耗时 TotalTime:所有Activity启动耗时 WaitTime:AMS启动Activity总耗时 日志方式 埋点方式是另一种统计线上时间方式,...标记整理算法 标记整理算法标记过程和标记清除算法一样,但清除过程并不是对可回收对象直接清理,而是将所有存活对象像一端移动,然后集中清理到端边界以外内存。...最后,我们将申请资源到堆栈信息保存起来。当我们触发某个规则上报问题时候,可以将收集到堆栈信息、电池是否充电、CPU 信息、应用前后台时间等辅助信息上传到后台即可。

79031

使用kotlin协程提高app性能(译)

本主题描述了如何使用Kotlin协程解决这些问题,使您能够编写更清晰,更简洁应用程序代码。 管理长时间运行任务 在Android上,每个应用程序都有一个主线程来处理用户界面管理用户交互。...Kotlin使用堆栈框架来管理与任何局部变量一起运行函数。挂起协程时,将复制保存当前堆栈帧以供以后使用。恢复时,堆栈帧将从保存位置复制回来,并且该函数将再次开始运行。...因为协同程序支持挂起和恢复,所以只要withContext块完成,主线程上协程就会以get结果恢复。 重要说明:使用suspend并不能告诉Kotlin在后台线程上运行函数。...async启动一个新协同程序,允许您使用名为await挂起函数返回结果。 通常,您应该从常规函数启动新协程,因为常规函数无法调用等待。...并行分解 当函数返回时,必须停止由挂起函数启动所有协同程序,因此您可能需要保证这些协程在返回之前完成。

2.3K10

大前端开发中路由管理之三:Android篇

新建一个任务栈B新建该Activity实例并置于栈顶。当页面返回时,会返回使用打开该Activity之前任务栈A,按照先进后出顺序跳转进任务栈A栈顶Activity。         ...隐式调用通过Intent Filter来实现,Android系统会根据在隐式意图中设置动作(action)、类别(category)、Data(URI和数据类型)找到合适组件来处理这个意图。...从启动对象来看,显式Intent通过明确启动对象组件信息使得有固定接收方,隐式Intent通过Intent Filter过滤匹配合适启动对象;从使用场景上看,在同一项目下页面跳转可以使用显式Intent...2.2 Navigation路由框架         Navigation是一个页面路由导航框架,简化了单Activity多Fragment之间跳转,本质上是封装一套跳转逻辑,我们在使用时只要将所有的需要跳转...同时,Navigation 组件提供管理所有返回堆栈功能,堆栈顶部为当前屏幕,堆栈中记录着访问目的地顺序,堆栈底部是应用起始地,同时提供了相关更改返回栈方法,使得我们可以灵活在不同Fragment

3.2K11

小技巧 | 在 Android Studio 调试应用

挂起线程 如果您在调试一个多线程应用,您将会注意到,在默认情况下断点将会挂起所有线程,但有时您可能不希望它这样做。...当您程序运行到第一个与当前调试流程无关断点时,右击打开  More  菜单,这时您会看到一个所有断点列表,您可以在这里复选所有与第一个 Bug 相关断点: ?...当然,您也可以在解决了 Bug 之后,使用分组功能删除所有相关断点。 Drop frame (丢弃当前帧) 有些时候,当您浏览挂起代码时,可能会意外跳过某个本应该进入方法。...分析堆栈信息 就算您掌握了所有的窍门与技巧,您代码仍然可能出现 Bug,而您也会因此收到一些崩溃报告,这些报告中则可能包含了异常堆栈信息文本副本。...APK 通过数据浏览来控制数据在调试器中显示方式 如何使用和理解 Overhead 选项卡 Android Developer 官方文档 | Android Studio — 调试您应用 IntelliJ

1.2K10
领券