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

Android - app移到后台、带到前台时不维护后台堆栈

Android中,当一个应用程序从前台切换到后台时,系统会将其放入后台堆栈中,并暂停其活动。当再次将应用程序带到前台时,系统会恢复应用程序的活动状态。

在Android中,应用程序的活动状态可以通过生命周期方法来管理。当应用程序从前台切换到后台时,系统会调用活动的onPause()方法,表示活动已经失去焦点并且不再可见。在这个方法中,可以保存应用程序的临时数据或者执行一些必要的清理操作。

当应用程序再次带到前台时,系统会调用活动的onResume()方法,表示活动已经重新获得焦点并且可见。在这个方法中,可以恢复应用程序的状态或者重新加载数据。

维护后台堆栈是为了保持应用程序的状态和用户体验的连续性。当应用程序从前台切换到后台时,系统会将其放入后台堆栈中,并保留其活动状态。这样,当用户再次返回应用程序时,可以继续上次的操作,而不需要重新启动应用程序。

然而,有时候我们可能希望在应用程序切换到后台时不维护后台堆栈,而是在再次返回应用程序时重新启动。这种情况下,可以通过在AndroidManifest.xml文件中的活动声明中设置android:noHistory="true"来实现。这样,当应用程序切换到后台时,系统会将其从后台堆栈中移除,再次返回应用程序时会重新启动。

总结起来,Android中的应用程序在切换到后台时会被放入后台堆栈中,并暂停其活动状态。当再次带到前台时,可以恢复应用程序的状态。如果希望在切换到后台时不维护后台堆栈,可以设置android:noHistory="true"来实现。

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

相关·内容

微信团队原创分享:iOS版微信的内存监控系统技术实践

一、前言 FOOM(Foreground Out Of Memory),是指App前台因消耗内存过多引起系统强杀。对用户而言,表现跟crash一样。...a) App没有升级; b) App没有调用exit()或abort()退出; c) App没有出现crash; d) 用户没有强退App; e) 系统没有升级/重启; f) App当时没有后台运行...5)前台卡死引起系统watchdog强杀: 也就是常见的0x8badf00d,通常原因是前台线程过多,死锁,或CPU使用率持续过高等,这类强杀无法被App捕获。...为此我们结合了已有卡顿系统,当前台运行最后一刻有捕获到卡顿,我们认为这次启动是被watchdog强杀。同时我们从FOOM划分出新的重启原因叫“APP前台卡死导致重启”,列入重点关注。...的MMTLS详解》  《微信团队原创分享:Android版微信后台保活实战分享(进程保活篇)》  《微信团队原创分享:Android版微信后台保活实战分享(网络保活篇)》  《Android版微信从

1.9K20

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

Task 是指在执行特定任务与用户交互的一系列 Activity。 这些 Activity 按照各自的打开顺序排列在堆栈中。...当用户触摸应用启动器中的图标(或主屏幕上的快捷方式),该应用的 Task 将出现在前台。...正如我们的日常体验,用户通过按“Home” 键离开任务,当前 Activity 将停止且其 Task 会进入后台。 ? 系统将保留 Task 中每个 Activity 的状态。...如果用户稍后通过选择开始任务的启动器图标来恢复任务,则该 Task 将出现在前台并恢复执行堆栈顶部的 Activity。 注意: 后台可以同时运行多个任务。...关联的标志位: FLAG_ACTIVITY_NEW_TASK 和 singleTask 还是有一定区别的 如果 Activity 对应的 Task 已经存在就不会创建新的 Task,而是把旧的 Task 带到前台

1.4K50

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

( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置 ) 博客中讲解了清除返回堆栈的一系列设置 ; 任务栈清除控制 : 在任务栈转为后台后 , 在转回前台 , 任务栈的行为设置...; ① 默认状态任务栈操作 : 默认状态下 , 后台的任务的返回堆栈过 30 分钟就会被清空只剩下根元素 ; ② 不去清空任务栈 : 设置 android:alwaysRetainTaskState...为 true , 则后台任务栈不会被清空 ; ③ 立即清空任务栈 : 设置 android:clearTaskOnLaunch 为 true , 只要应用进入后台 , 就会马上清空任务栈 ; ④ 界面返回清空...和 返回堆栈 ( 前台 , 后台 ) 两个角度分析 4 种启动模式 ; standard, singleTop , singleTask , singleInstance , 4 种启动模式 ;...一般情况下不使用 , 只有开发特殊 APP 才用到这两个启动模式 ; Activity 实例位置 : 上述两种启动模式的 Activity 只能处于返回堆栈根元素位置 , 只能在堆栈最下面 ; Activity

1.7K10

Android 各版本特性

APP必须拥有FOREGROUND_SERVICE权限,才允许使用前台服务,否则会抛出异常。...目前很多APP开发者们对Android O的一些后台限制行为不太了解这些变更,遇到问题可能误以为系统问题,所以这里说到这顺便提一下关于Android O对后台行为的一些管控。...; 对前台服务(Foreground Service)不会有这个限制,因为前台服务都会挂一个前台通知对用户来说是可见的。...PMS 重构Package Manger,减少核心服务的代码复杂度,将permission,intent等代码移到单独的类, 将user management,dex,shortcuts等不相关代码移到子包...Android Q 新特性 隐私保护升级,给予用户更多的地理位置控制,用户可以让APP在使用期间获取地理位置,不使用无法获取地理位置信息 用户互动新方式:适配折叠屏及新型屏幕 网络连接:扩展了网络连接堆栈

1.3K10

Android进程与线程

Android进程与线程 进程 前台进程 可见进程 服务进程(service进程) 后台进程 空进程 Android线程间通信有哪几种方式 Devik进程和Linux进程的区别 进程保活(不死进程) 当前...Android进程保活手段主要分为 黑、白、灰 三种 黑色保活 白色保活 灰色保活 进程 前台进程 可见进程 服务进程 后台进程 空进程 前台进程 // 前台进程 当前进程activity正在与用户进行交互...注:每个 Android 应用程序都会对应一个独立的 Dalvik 虚拟机 // Linux 进程: 有独立的内核堆栈和独立的存储空间,它是操作系统中资源分配和调度的最小单位。...进程保活(不死进程) 当前Android进程保活手段主要分为 黑、白、灰 三种 黑色保活:不同的app进程,用广播相互唤醒(包括利用系统提供的广播进行唤醒) 白色保活:启动前台Service 灰色保活...那么如何利用系统的漏洞呢,大致的实现思路和代码如下: 思路一:API < 18,启动前台Service直接传入new Notification(); 思路二:API >= 18,同时启动两个id相同的前台

64820

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

返回堆栈 默认操作 ---- 任务进入后台 然后 恢复前台运行 返回堆栈 的 默认处理机制 : ① 长时间挂起任务 : 如果任务长时间在后台挂起 , 系统会清除 该任务返回堆栈中除 根 Activity...设置 android:clearTaskOnLaunch 属性为 true 效果 : 只要任务进入后台 , 再次返回 , 哪怕是瞬间返回 , 返回堆栈只剩下根元素 , 其它元素全部被清空 ; <activity...属性 默认值 : 该属性值默认为 false , 即默认情况下 任务进入后台 , 短时间内回到前台 不会清空 返回堆栈中的元素 ; 3 . android:clearTaskOnLaunch 属性设置起作用的前提条件...” , 那么该任务中的 Activity 界面就会消失 ; ③ 优先级 : 该配置的优先级略高 , 当 android:allowTaskReparenting 属性 与 该属性同时配置 , 如果该界面的任务进入前台...总结 ---- 返回堆栈清除管理 总结 : ① 默认状态下 : 任务进入后台 , 如果超过一定时间 , 就会清除除根 Activity 之外的其它元素 , 短时间内进入前台 , 会恢复完整的返回堆栈 ;

1K20

Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )

③ 不同应用 , 相同的亲和性 : 如果其它应用 Activity 界面的亲和性 属性就是本应用的包名 , 那么打开该 Activity 界面 , 该界面就会放入本应用的 返回堆栈中 ; 3 ....; ② 如果 当前 应用 B 的 任务 B 处于后台 : 那么会将 任务 B 激活 到前台运行 , 并将 Activity B 放入 任务 B 的返回堆栈栈顶 ; IV ....Activity A 处于 任务 B 的返回堆栈中 , Activity A 界面是在 任务 B 中启动的 ; ③ 设置属性为 true 的结果 : 当任务 A 进入了前台运行 , Activity...A 就会转移到 任务 A 的返回堆栈中 ; 3 ....B ; ④ 动作 2 : 如果此时启动 应用 A , 即 应用 A 的 任务 A 进入了前台运行 , 则 处于 任务 B 中的 Activity A1 会转移到 任务 A 中运行 ;

78910

Android 优化——启动优化

Android 优化目录 ---- App 启动方式 冷启动 App 没有启动过或 App 进程被杀,系统中不存在该 App 进程,此时启动即为冷启动。...热启动 热启动意味着 App 进程只是处于后台,系统只是将其从后台带到前台展示给用户。类同与冷启动,在这个过程中,屏幕会显示一个空白的窗口(颜色基于主题),直至 activity 渲染完毕。...用户退出 App 后,系统可能由于内存原因将 App 杀死,进程和 activity 都需要重启,但是可以在 onCreate 中将被动杀死锁保存的状态(saved instance state)恢复。... 先加载一个渲染布局的 Activity 作为启动屏 写一个什么都不做的 LogoSplashActivity public class LogoSplashActivity...> 这样启动屏显示 LogoSplashActivity,本身渲染布局,显示主题设置的 placehold UI 背景。

93130

Android卡顿优化 | ANR分析与实战(附ANR-WatchDog源码分析及实战、与AndroidPerformanceMonitor的区别)

10s,后台60s BroadReceiver 在特定的时间(一般前台10s,后台60s)之内没有响应完成; ServiceTimeout,前台20s,后台200s Service 在特定的时间(一般前台...20s,后台200s)之内没有处理完成; 发生ANR后Android系统的执行流程 APP发生ANR 进程接收异常终止信号,开始写入进程ANR信息(当时场景,包含当前线程所有堆栈信息、CPU/IO的使用情况等...线下套路其实就是在APP发生ANR, 导出信息文件, 查看文件,结合代码进行分析; 线上ANR监控方案 通过FileOberver监控上述的ANR信息文件的变化, 如果这个文件发生了变化,那就说明发生了...另外补充一下, ANRWatchDog提供了两个重载的构造器, 提供给开发者对卡顿判定周期进行设置,开发者设置则使用默认配置: 【跟BlockCanary同一个德行】 ?...优化: 当然默认的APP崩溃处理法并不妥当, 影响用户体验, 实际开发中, 我们可以自己定义ANRListener,自定义处理方式【上面说过了】, 把堆栈信息上报给服务器就是了!!!!

4.7K42

iOS微信内存监控

FOOM(Foreground Out Of Memory),是指App前台因消耗内存过多引起系统强杀。对用户而言,表现跟crash一样。...如果没有足够的“技巧”,私有API带上Appstore,我们只能退而求其次。...5.系统没有升级/重启 6.App当时没有后台运行 7.App出现FOOM 1、2、4、5比较容易判断,3依赖于自身CrashReport组件的crash回调,6、7依赖于ApplicationState...前台卡死引起系统watchdog强杀 也就是常见的0x8badf00d,通常原因是前台线程过多,死锁,或CPU使用率持续过高等,这类强杀无法被App捕获。...为此我们结合了已有卡顿系统,当前台运行最后一刻有捕获到卡顿,我们认为这次启动是被watchdog强杀。同时我们从FOOM划分出新的重启原因叫“APP前台卡死导致重启”,列入重点关注。

1.3K30

Matrix-iOS 内存监控

FOOM(Foreground Out Of Memory),是指App前台因消耗内存过多引起系统强杀。对用户而言,表现跟crash一样。...如果没有足够的“技巧”,私有API带上Appstore,我们只能退而求其次。...1.App没有升级 2.App没有调用exit()或abort()退出 3.App没有出现crash 4.用户没有强退App 5.系统没有升级/重启 6.App当时没有后台运行 7.App出现FOOM...前台卡死引起系统watchdog强杀 也就是常见的0x8badf00d,通常原因是前台线程过多,死锁,或CPU使用率持续过高等,这类强杀无法被App捕获。...为此我们结合了已有卡顿系统,当前台运行最后一刻有捕获到卡顿,我们认为这次启动是被watchdog强杀。同时我们从FOOM划分出新的重启原因叫“APP前台卡死导致重启”,列入重点关注。

7.2K53

任务栈?返回栈?启动模式?

Activity X 和 Activity Y 处于后台任务栈,它们的启动模式都是 singleTask。...在位于前台任务栈顶的 Activity 2 中启动处于后台任务栈的 Activity Y(跨应用启动) ,此时会把整个后台任务栈带到前台,并放到 返回栈 的栈顶。...如果想要的任务栈已经存在,并且其中已经运行着待启动的 Activity ,那么这个任务栈会被带到前台,并回调 onNewIntent() 。这个行为和 singleTask 一致。...相当于页面 B 从 App1 的任务栈中转移到App2 的任务栈中。 但是,事实情况是,我没有复现出这样的场景。...taskAffinity—— luyao.android2 , 即 App2 的默认任务栈,并设置 allowTaskReparenting="true",如下所示: <activity android

99620

深入学习Activity的生命周期和启动模式

用ApplicationContext启动standard模式的Activity SingleTask模式中的参数TaskAffinity 任务栈 查看Activity 堆栈情况的命令 Activity...如果希望在横竖屏切换重新创建Activity,可以给Activity指定configChanges属性。 常用的属性值有: locale:设备的本地位置发生了改变,一般指切换了系统语言。...(2)资源内存不足导致低优先级的Activity被杀死 Activity按照优先级从高到低依次为: 前台Activity 可见但非前台Activity 后台Activity 当系统内存不足,系统会按照...的某个非MainActivity得Activity后,如果B这个Activity的allowTaskReparenting属性为true,那么当应用B被启动后,此Activity会直接从应用A的任务栈转移到应用...任务栈 分为前台任务栈和后台任务栈,后台任务栈中的Activity处于暂停状态,用户可以通过切换将后台任务栈再次调到前台。 4.

69210

Android 面试之必问性能优化

冷启动:系统不存在App进程(如APP首次启动或APP被完全杀死)启动App称为冷启动。 热启动:按了Home键或其它情况app被切换到后台,再次启动App的过程。...Android有自动管理内存的机制,但是对内存的恰当使用仍然容易引起严重的性能问题。...还有当时手机是否在充电、手机的电量水平、应用前台后台时间、CPU 状态等一些信息也可以帮助我们排查某些问题。...,获取应用堆栈等等 } else { // 应用前台逻辑,获取应用堆栈等等 } // 释放 Wakelock } else...最后,我们将申请资源到的堆栈信息保存起来。当我们触发某个规则上报问题的时候,可以将收集到的堆栈信息、电池是否充电、CPU 信息、应用前后台时间等辅助信息上传到后台即可。

83900

Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?

前台服务类型是在 Android10 引入的,通过 android:foregroundServiceType 可以指定 的服务类型,可供选择的前台服务类型有: camera:需要在后台继续访问摄像头...remoteMessaging:将短信从一台设备转移到另一台设备。在用户切换设备,帮助确保用户消息任务的连续性。...当然这是推荐的。...2.5 后台启动 Activity 新增限制 在 Android14 上系统进一步限制了 App后台启动 Activity 的情况: 当 App 使用 PendingIntent#send() 或类似方法发送...当一个前台可见应用使用 bindService() 方法绑定另一个后台应用的 Service ,这个可见应用现在必须选择是否将自己的后台 Activity 启动权限授予被绑定的服务。

5.2K30

Android 面试之必问性能优化

冷启动:系统不存在App进程(如APP首次启动或APP被完全杀死)启动App称为冷启动。 热启动:按了Home键或其它情况app被切换到后台,再次启动App的过程。...Android有自动管理内存的机制,但是对内存的恰当使用仍然容易引起严重的性能问题。...还有当时手机是否在充电、手机的电量水平、应用前台后台时间、CPU 状态等一些信息也可以帮助我们排查某些问题。...,获取应用堆栈等等 } else { // 应用前台逻辑,获取应用堆栈等等 } // 释放 Wakelock } else...最后,我们将申请资源到的堆栈信息保存起来。当我们触发某个规则上报问题的时候,可以将收集到的堆栈信息、电池是否充电、CPU 信息、应用前后台时间等辅助信息上传到后台即可。

73031

iOS微信内存监控

本文介绍如何实现离线化的内存监控工具,用于App上线后发现内存问题。 ---------- FOOM(Foreground Out Of Memory),是指App前台因消耗内存过多引起系统强杀。...如果没有足够的“技巧”,私有API带上Appstore,我们只能退而求其次。...4.用户没有强退App 5.系统没有升级/重启 6.App当时没有后台运行 7.App出现FOOM 1、2、4、5比较容易判断,3依赖于自身CrashReport组件的crash回调,6、7依赖于ApplicationState...前台卡死引起系统watchdog强杀 也就是常见的0x8badf00d,通常原因是前台线程过多,死锁,或CPU使用率持续过高等,这类强杀无法被App捕获。...为此我们结合了已有卡顿系统,当前台运行最后一刻有捕获到卡顿,我们认为这次启动是被watchdog强杀。同时我们从FOOM划分出新的重启原因叫“APP前台卡死导致重启”,列入重点关注。

3.4K50

iOS微信内存监控

本文介绍如何实现离线化的内存监控工具,用于App上线后发现内存问题。 FOOM(Foreground Out Of Memory),是指App前台因消耗内存过多引起系统强杀。...如果没有足够的“技巧”,私有API带上Appstore,我们只能退而求其次。...1.App没有升级 2.App没有调用exit()或abort()退出 3.App没有出现crash 4.用户没有强退App 5.系统没有升级/重启 6.App当时没有后台运行 7.App出现FOOM...前台卡死引起系统watchdog强杀 也就是常见的0x8badf00d,通常原因是前台线程过多,死锁,或CPU使用率持续过高等,这类强杀无法被App捕获。...为此我们结合了已有卡顿系统,当前台运行最后一刻有捕获到卡顿,我们认为这次启动是被watchdog强杀。同时我们从FOOM划分出新的重启原因叫“APP前台卡死导致重启”,列入重点关注。

1.8K50

ANR日志解析

广播类型超时(前台15s,后台60s)——BroadcastReceiver Timeout a.静态注册的广播和有序广播会ANR,动态注册的非有序广播并不会ANR b.广播发送,会判断该进程是否存在...,不存在则创建,创建进程的耗时也算在超时时间里 c.只有当进程存在前台显示的Activity才会弹出ANR对话框,否则会直接杀掉当前进程 d.当onReceive执行超过阈值(前台15s,后台60s),...(), onRebind(), onTaskRemoved(), onUnbind(), onDestroy(). b.前台Service超时时间为20s,后台Service超时时间为200s c.如何区分前台...、后台执行————当前APP处于用户态,此时执行的Service则为前台执行。...CPU被抢占:一般来说,前台在玩游戏,可能会导致你的后台广播被抢占CPU b.

1.8K00

干货:ANR日志分析全面解析

15s,后台60s) BroadcastReceiver Timeout a.静态注册的广播和有序广播会ANR,动态注册的非有序广播并不会ANR ​ b.广播发送,会判断该进程是否存在,不存在则创建,...​ e.如何发送前台广播:Intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND) 2.3 服务超时(前台20s,后台200s) Service Timeout...b.前台Service超时时间为20s,后台Service超时时间为200s ​ c.如何区分前台后台执行————当前APP处于用户态,此时执行的Service则为前台执行。 ​...CPU被抢占:一般来说,前台在玩游戏,可能会导致你的后台广播被抢占CPU ​ b....5.5 内存紧张导致ANR 如果有一份日志,CPU和堆栈都很正常(贴出来了),仍旧发生ANR,考虑是内存紧张。

1.8K30
领券