首页
学习
活动
专区
圈层
工具
发布

被后台杀死后,Android应用如何重新走闪屏逻辑

Android应用运行在后台的时候,经常被系统的LowMemoryKiller杀掉,当用户再次点击icon或者从最近的任务列表启动的时候,进程会被重建,并且恢复被杀之前的现场。什么意思呢?...Android为了能够让用户无感知后台杀死,就做了这种恢复逻辑,不过,在开发中,这种逻辑带了的问题确实多种多样,甚至有些产品就不希望走恢复流程,本文就说说如何避免走恢复流程。...从推送唤起被杀APP时,如何走闪屏逻辑 对于推送消息的处理,其路由器一般放在MainActivity,并且在onCreate跟onNewIntent都有添加,如果APP存活的情况,可以直接跳转目标页面,...的路由系统中,针对这两种场景要,先跳转闪屏,闪屏回来后,再跳转推送页 如何判断呢,后面两种场景其实只需要判断是否有Activity存活即可,也就是查查APP的topActivity是否为null,注意不要去向...作者:看书的小蜗牛 原文链接:被后台杀死后,Android应用如何重新走闪屏逻辑 仅供参考,欢迎指正

3.1K40

Android 性能优化—— 启动优化提升60%

但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动 在冷启动时,应用程序从头开始。...在其他状态下,系统需要将正在运行的应用程序从后台运行到前台。我们建议您始终根据冷启动的假设进行优化。这样做也可以改善热启动和温启动的性能 在冷启动开始时,系统有三个任务。...因为现在 App 应用启动都会先进入一个闪屏页(LaunchActivity) 来展示应用信息 默认情况下会出现白屏现象,系统默认会在启动应用程序的时候 启动空白窗口 ,直到 App 应用程序的入口...,直到 App 应用程序的入口 Activity 创建成功,视图绘制完毕 解决方法可查看Android启动界面SplashActivit的实现方法 代码优化 Android中如何计算 App 的启动时间...最后还剩下那些为数不多的组件在主线程初始化动作,例如埋点,点击流,数据库初始化等,不过这些消耗的时间可以在其它地方相抵 需求背景: 应用App通常会设置一个固定的闪屏页展示时间,例如2000ms,所以我们可以根据用户手机的运行速度

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

    为什么在代码运行时会出现内存溢出的错误,如何有效地避免和处理这种情况?

    在代码运行时出现内存溢出的错误通常是由于程序使用的内存超过了系统的可用内存限制。...为避免内存泄漏,应确保在使用完毕后及时释放不需要的内存块。 大规模数据处理:如果程序需要处理大规模数据,而内存不足以一次性加载所有数据,则可能导致内存溢出。...为避免这种情况,可以考虑使用分块处理数据,只加载和处理部分数据,减少内存使用。 内存过度分配:如果程序在运行时分配了过多的内存,超出了系统可用的物理内存或虚拟内存限制,就会导致内存溢出错误。...为避免这种情况,可以评估程序的内存需求,尽量减少内存使用,合理分配内存空间。 为有效避免和处理内存溢出错误,可以采取以下措施: 避免无限递归,确保递归函数有递归终止条件。...在使用动态分配内存的语言中,可以考虑使用垃圾回收机制来管理内存。 对于某些特殊情况,可以考虑增加系统的物理内存或虚拟内存限制。

    1.8K10

    App 启动优化

    Android APP启动时会出现白屏 由于应用程序启动时冷启动,系统会默认在启动时启动空白窗口 应用程序启动有三种状态,每种状态都会影响应用程序对用户可见所需的时间:冷启动,热启动和温启动。...在冷启动时,应用程序从头开始。在其他状态下,系统需要将正在运行的应用程序从后台运行到前台。我们建议您始终根据冷启动的假设进行优化。这样做也可以改善热启动和温启动的性能。...为了更顺滑无缝衔接我们的闪屏页,可以在启动 Activity 的 Theme中设置闪屏页图片,这样启动窗口的图片就会是闪屏页图片,而不是白屏。...应用App通常会设置一个固定的闪屏页展示时间,例如2000ms,所以我们可以根据用户手机的运行速度,对展示时间做出调整,但是总时间仍然为 2000ms。...2000ms - diffTime.     }   所以我们就可以动态的设置应用闪屏的显示时间,尽量让每一部手机展示的时间一致,这样就不会让手机配置较低的用户感觉漫长难熬的闪屏页时间(例如初始化了2000ms

    1.6K10

    Android 启动优化详解

    、onMeasure、onLayout) (系统) 闪屏显示 (应用) MainActivity创建界面准备 (系统) 主页/首页 显示 (应用) 其他工作(数据的加载,预加载,业务组件初始化) 窗口可操作...闪屏优化: 预览闪屏(今日头条),预览窗口实现成闪屏效果,高端机上体验非常好,不过低端机上会拉长总的闪屏时长(建议在Android6.0以上才启用此方案); //优点:避免点击桌面图标无响应 //缺点...线程优化 减少CPU调度带来的波动,让应用的启动时间更加稳定 控制线程的数量,避免线程太多互争CPU资源,用统一线程池,根据机器性能来控制数量; 检查线程间的锁,特别是防止主线程出现长时间的空转(主线程因为锁而干等子线程任务...子线程install(不推荐): 闪屏页开一个子线程去执行MultiDex.install,然后加载完才跳转到主页, 需要注意的是闪屏页的Activity,包括闪屏页中引用到的其它类必须在主dex中,...启动时间的扣除逻辑:闪屏,广告,新手引导的时间都应扣除 启动排除逻辑:Broadcast、Server 拉起,启动过程进入后台等都需排除掉 衡量启动速度快慢的标准 平均启动时间(体验差的用户可能被平均

    5.8K85

    金三银四季招聘季,APP测试面试题温新一遍

    push消息时,会有红点展示,推送消息阅读前后数字的变化是否正确; 应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转否正确。 多条推送的合集的显示和跳转是否正确。...四 App的闪退通常是什么原因造成的? APP闪退的原因可能是: 缓存垃圾太多,Android系统的特性,如果长时间不清理垃圾文件,会导致越来越卡,甚至闪退。 运行程序太多,导致内存不足。...异常测试: 1.热启动应用:应用在后台长时间待机;应用在后台待机过程中,手机重启。 2.网络切换和中断恢复:网络切换;中断恢复。 3.电话信息中断恢复。...对于浏览器而言,由于程序启动时还会有教育页和闪屏的下发,因此启动时间的获取显得尤为重要。...启动时间分为冷启动时间和热启动时间,所谓的“冷启动”,就是一个完全没有运行的应用的启动时间,与热启动(应用已经在后台运行,某个事件将其带至前台)相比,由于此时系统尚未建立缓存,因此冷启动往往要较平时(热启动

    1.2K21

    金三银四季招聘季,APP测试面试题温新一遍

    push消息时,会有红点展示,推送消息阅读前后数字的变化是否正确; 应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转否正确。 多条推送的合集的显示和跳转是否正确。...四 App的闪退通常是什么原因造成的? APP闪退的原因可能是: 缓存垃圾太多,Android系统的特性,如果长时间不清理垃圾文件,会导致越来越卡,甚至闪退。 运行程序太多,导致内存不足。...异常测试: 1.热启动应用:应用在后台长时间待机;应用在后台待机过程中,手机重启。 2.网络切换和中断恢复:网络切换;中断恢复。 3.电话信息中断恢复。...对于浏览器而言,由于程序启动时还会有教育页和闪屏的下发,因此启动时间的获取显得尤为重要。...启动时间分为冷启动时间和热启动时间,所谓的“冷启动”,就是一个完全没有运行的应用的启动时间,与热启动(应用已经在后台运行,某个事件将其带至前台)相比,由于此时系统尚未建立缓存,因此冷启动往往要较平时(热启动

    1.1K30

    启动优化

    、onMeasure、onLayout) (系统) 闪屏显示 (应用) MainActivity创建界面准备 (系统) 主页/首页 显示 (应用) 其他工作(数据的加载,预加载,业务组件初始化) 窗口可操作...闪屏优化: 预览闪屏(今日头条),预览窗口实现成闪屏效果,高端机上体验非常好,不过低端机上会拉长总的闪屏时长(建议在Android6.0以上才启用此方案); //优点:避免点击桌面图标无响应 //缺点...线程优化 减少CPU调度带来的波动,让应用的启动时间更加稳定 控制线程的数量,避免线程太多互争CPU资源,用统一线程池,根据机器性能来控制数量; 检查线程间的锁,特别是防止主线程出现长时间的空转(主线程因为锁而干等子线程任务...子线程install(不推荐): 闪屏页开一个子线程去执行MultiDex.install,然后加载完才跳转到主页, 需要注意的是闪屏页的Activity,包括闪屏页中引用到的其它类必须在主dex中,...启动时间的扣除逻辑:闪屏,广告,新手引导的时间都应扣除 启动排除逻辑:Broadcast、Server 拉起,启动过程进入后台等都需排除掉 衡量启动速度快慢的标准 平均启动时间(体验差的用户可能被平均

    3.8K54

    面试软件测试APP岗位,这些题目你不可不知!

    内存使用: 内存使用不当会导致应用卡顿、闪退等问题。需要测试应用在运行过程中的内存占用情况,确保应用能够及时释放内存,避免内存泄漏。...检查APP在弱网情况下请求回调未完成时执行其他动作及交互是否会出现闪退等异常。 验证弱网环境下原始数据是否丢失,以及是否会出现请求堆积的情况。...交叉测试:测试APP在与其他应用同时运行时的表现,如电话、短信等应用的干扰情况。 八 阐述APP 冷启动、暖启动、热启动、首屏启动?...一、冷启动 定义:当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就叫做冷启动。 场景: 程序安装后的第一次启动。...这是应用程序向用户展示新版本特性或变化的机会。 特点:首屏启动是应用程序与用户进行交互的起点。如果首屏启动时间过长,用户可能会感到不耐烦或失去兴趣,从而导致用户流失或卸载应用程序。

    94910

    APP,Activity的启动速度优化

    Activity堆栈中的,并且这个堆栈只允许有这个Activity,不能有其他的Activity 如何计算Activity启动时间 如果你的手机有root过,那么就可以切换到system_process...Activity的启动时间,而totalTime还包括而totalTime是指APP进程启动时长,闪屏页面的启动时长以及闪屏页面的消失,新Activity的启动时长之和,所以关注APP的启动时间,我们通常关注的是...Avoid triggering layout during animations(避免在View执行动画过程中出发View的layout,否则可能会造成卡顿) UI Thread的优先级是默认优先级,...里面去获取View的高度依然还是0 APP闪屏页面实现 为了实现点击秒开的效果,我们往往会实现APP闪屏页面,所谓的闪屏页面就是一个不加载布局文件的Activity,但是可以设置它的theme里面的window...,然后再由闪屏页面跳转到欢迎页面,然后再进入主界面,其实这样综合下来,启动时间是变长了,因为在Activity之间切换的时候要先pause上一个activity然后再create下一个Activity,

    1.7K30

    优化App冷启动,实现启动页错觉秒开

    进程的创建是需要时间的,在创建完成之前,界面是呈现假死状态的,这可能会让用户会以为没有点到APP而再次点击,极大的降低了用户体验,Android需要及时做出反馈去避免这段时间的尴尬。...安卓启动方式一般有3种: >Coldstart——冷启动: 此种方式最为耗时,一般是因为进程被干掉或者是第一次启动app,系统需要重新fork进程进行一系列初始化,后台没有该应用的进程。...>LukeWarm Start——热启动 启动方式最快,比暖启动开销小,类似于按返回键back、home键退出应用又立即进入的那种行为,后台已有该应用的进程。...接下来看看如何优化冷启动: 既然我们已经找到这个黑白屏是出自系统的预览窗口,我们就可以通过操控这个窗口来实现。...若是设置一张图片,也要设置false,即可实现秒开闪屏效果。

    2.2K30

    Android App性能优化全方面解析

    有些人可能会觉得自己的应用用着还蛮OK的,其实那是因为你没进行一些瞬时测试和压力测试,一旦在这种环境下运行你的App你就会发现很多性能问题。...应用发生冷启动时,系统一定会执行下面的三个任务: 开始加载并启动应用 应用启动后,显示一个空白的启动窗口(启动闪屏页) 创建应用信息 那么创建应用信息,系统就需要做一屁股的事: application的初始化...但启动时,系统依然会展示闪屏页,直到第一个 Activity 的内容呈现为止。 热启动 相比暖启动,热启动时应用做的工作更少,启动时间更短。...我们还可以这样,闪屏页我们把他当作一个fragment嵌套在MainActivity中,那么我们可以在进入闪屏时直接预加载主页的view。倒计时我们把闪屏页remove掉直接显示首页。...在多网络请求的情况下,最好进行批量处理,尽量避免频繁的间隔网络请求。

    81510

    Android性能优化典范 - 第6季

    这次一共才6个小段落,涉及的内容主要有:程序启动时间性能优化的三个方面:优化activity的创建过程,优化application对象的启动过程,正确使用启动显屏达到优化程序启动性能的目的。...更严重的是,如果启动时间过长,可能导致程序出现ANR。我们应该避免出现这两种糟糕的情况。...App Launch Time & Theme Launch Screens 启动闪屏不仅仅可以作为品牌宣传页,还能够减轻用户对启动耗时的感知,但是如果使用不恰当,将适得其反。...如果程序的启动速度足够快,我们看的闪屏窗口停留显示的时间则会很短,但是当程序启动速度偏慢的时候,这个启动闪屏可以一定程度上减轻用户等待的焦虑感,避免用户过于轻易的关闭应用。...对于启动闪屏,正确的使用方法是自定义一张图片,把这张图片通过设置主题的方式显示为启动闪屏,代码执行到主页面的onCreate的时候设置为程序正常的主题。 5.

    83530

    Multidex(二)之Dex预加载优化

    一、前言 在Multidex(一)之源码解析中我们介绍到MultiDex极有可能出现ANR(Application No Response)的问题,秒秒钟卡死我们的应用,用户肯定忍不了要怒卸载啊!...说干就干,凭借程序员机智的大脑,分毫之间,一个优化方案的雏形已经了然于胸:App第一次启动时单独开一个额外优化的进程率先进行Dex提取以及DexOpt的操作,与此同时主进程在后台等待,优化的进程执行完毕之后通知主进程继续往下执行...然后在PreLoadDexActivity中执行优化的操作,完成后修改标示; ? 在AndroidManifest中配置: ? 运行看一下效果: ?...第一次打开App,会出现PreLoadDexActivity,略显突兀,可以再应用的闪屏页加上这段逻辑,根据标示判断究竟执行正常逻辑还是优化的逻辑。...当出现ANR时,都会最终调用到AMS的appNotResponding()方法。 因为主进程此时已经进入后台,不响应Android屏幕事件。

    1.4K50

    Android 12 SplashScreen API快速入门

    什么是SplashScreen SplashScreen其实通俗点讲就是指的闪屏界面。...这个我们国内开发者一定不会陌生,因为绝大多数的国内App都会有闪屏界面这个功能,很多的App还会利用闪屏界面去打广告。...下图是QQ的闪屏界面: 然而在海外,闪屏界面其实并不太常见,甚至Google之前都不推荐我们在App中加入闪屏界面,所以这次Android 12中官方推出了SplashScreen功能还是让我有点意外的...不过这次官方的SplashScreen和我们国内常见的闪屏界面还不一样,它并不是为了让你在这个界面打广告的,而是为了在App启动初始化的时候避免让用户在一个空白界面等待过长时间。...虽说Android一直是建议我们将重量级的操作延后执行,让App的启动时间越短越好,但是仍然无法完全避免一些App启动时的短暂白屏情况。

    2.4K10

    一触即发——App启动优化最佳实践

    其实最早的时候,闪屏是用来在App未完全启动的时候,让用户不至于困惑App是否启动而加入的一个设计。...而现在的很多App,基本上都把闪屏当做一个广告、宣传的页面了,貌似已经失去了原本的意义,但闪屏,不管怎么说,在一个App启动的时候,都是非常重要的,设计的事情,交给UE吧,开发要做的,就是让App的启动体验...计算启动时间——ADB 通过ADB命令可以统计应用的启动时间,指令如下所示: ?...计算启动时间——Screen Record 通过录屏进行启动的分析,是一个很好的办法,在API21+,Android给我们提供了一个更加方便、准确的方式: ➜ ~ adb shell screenrecord...配置中的android:opacity="opaque"参数是为了防止在启动的时候出现背景的闪烁。 接下来可以设置一个新的Style,这个Style就是Activity预加载的Style。

    1.5K40

    Android性能优化(一)

    视觉优化 应用程序启动有三种状态,每种状态都会影响应用程序对用户可见所需的时间:冷启动,热启动和温启动。 在冷启动时,应用程序从头开始。在其他状态下,系统需要将正在运行的应用程序从后台运行到前台。...为了更顺滑无缝衔接我们的闪屏页,可以在启动 Activity 的 Theme中设置闪屏页图片,这样启动窗口的图片就会是闪屏页图片,而不是白屏。...需求背景: 应用App通常会设置一个固定的闪屏页展示时间,例如2000ms,所以我们可以根据用户手机的运行速度,对展示时间做出调整,但是总时间仍然为 2000ms。...我们可以通过红,黄,绿三种不同的颜色来区分布局的Measure,Layout,Executive的相对性能表现如何 提升布局性能的关键点是尽量保持布局层级的扁平化,避免出现重复的嵌套布局。...被 low memory killer 杀掉、从系统的任务管理器中划掉等 ANR 我们可以在应用启动的时候设定一个标志,在主动自杀或崩溃后更新标志,这样下次启动时通过检测这个标志就能确认运行期间是否发生过异常退出

    3K20

    关于APP冷启动与热启动的区别及冷启动出现的白屏解决办法

    首先科普一下关于APP冷热启动的区别: app冷启动: 当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。...app热启动: 当应用已经被打开, 但是被按下返回键、Home键等按键时回到桌面或者是其他程序的时候,再重新打开该app时, 这个方式叫做热启动(后台已经存在该应用进程)。...其次就是关于冷启动出现的白屏解决问题,排除是代码的逻辑繁琐产生的启动白屏或是黑屏问题(可以在启动页设置一个图片,当启动完图片的时候会不会出现黑屏或者是白屏来判断是不是代码的逻辑问题,具体设置方法在底文给出...在android studio 2.0.0 之后instant run 中的 开发阶段会出现白屏,不过不要担心,这算是as 的一个副作用, release版本就不会出现这种情况了。...如果有的话, 那么就可以设置: 在style.xml文件中为启动的Activity设置主题,设置android:windowBackground属性为启动Activity显示的闪屏图片,这样才有APP

    1K20

    如何优化Androd App启动速度

    真爱,请置顶或星标 作者:申国骏 https://www.jianshu.com/p/bef74a4b6d5e 在上一篇文章如何统计Android App启动时间中我们探讨了如何统计Android App...1.App 启动流程分析 上一篇文章如何统计Android App启动时间我们定义了从用户角度上观察的启动时间。...默认的启动闪屏是白色的,某些开发者会通过设置一个透明的启动闪屏主题来隐藏启动加载慢的问题,不过这种做法会影响用户体验。...我们可以通过设置一个带logo的启动闪屏主题来让用户感受到在点击桌面图标后马上得到响应。不过这里需要注意启动闪屏主题不能使用很大的图片资源,因为加载这些资源本身也是耗时的。   ...设置启动闪屏可以在第一个展示的Acitivty设置主题: AndroidManifest.xml: <activity android:name=".activity.DictSplashActivity

    1.2K40

    Metro风格XAML应用程序性能技巧

    微软发布了一篇名为《Metro风格XAML应用程序性能技巧》的白皮书,其中包含一些关于保持响应、确保流畅动画、改善启动时间、消耗较少资源等方面的建议。我们在这里进行了一些总结。...UI 相关: 使用后台线程并保持UI线程可响应 —— 使用async与await编程; 避免在布局处理过程中让布局失效; 使用Windows.Storage.BulkAccess与Windows.Storage.StorageFolder.GetFilesAsync...启动时间: 借助闪屏、启动页面、后台加载数据来提高感知; 启动阶段尽可能地最小化待解析的XAML; 优化元素数量; 如果没有太大差别,可以合并程序集——加载一个大的程序集通常要比加载两个小的程序集所花时间要少...应用程序处理生命期: 在终结前进入暂停状态——一个应用程序在终结前的暂停状态最多可以有5秒的时间用于存储它的数据; 只序列化和反序列化改动的数据; 尽可能在暂停状态释放尽可能多的内存;释放文件和设备句柄...与此同时,设计时要考虑应用程序可以快速地恢复状态; 将画刷创建为ResourceDictionary元素以在页面间进行重用,该做法可以提高缓存效果。

    88780
    领券