在 Android 中,从后台状态恢复应用程序时可能会产生崩溃 —— 此类崩溃是意外发生的,而且仅通过查看崩溃日志,我们很难理解崩溃的具体原因以及解决问题,而本文讨论了此类问题及其解决方法。...问题 在监视产品的崩溃日志时,我注意到一些问题与日俱增。该应用在正常测试条件下似乎运行良好,并且崩溃不可复现,直到应用程序从后台任务中进入前台。...当用户与其他应用程序交互时将应用程序置于后台时,如果应用程序没有足够的可用内存,则操作系统会终止你的应用程序进程。而这一情况通常发生在前台运行另一个需要更大手机内存 (RAM) 的应用程序时。...当用户从后台导航回被结束了的应用程序时候,该应用程序将从 SplashActivity 重新启动,就像是一次新的启动。 这将防止应用程序访问在进程重建过程中可能已丢失的数据,从而防止应用程序崩溃。...虽然此解决方案可以防止崩溃,但是这种方法其实就是重新启动应用程序,而不是从中断的位置恢复应用程序。如果你在发布应用后遇到此问题,并且急切地希望快速解决这个问题,则此解决方案应该能帮你大忙。
前言:了解应用程序移动到后台时执行自定义代码的顺序。 概述: 应用程序可以从几个不同的起点进入到后台,如图1所示。...系统事件可以导致一个挂起的应用程序返回到后台,或者导致一个不运行的应用程序直接启动到后台。当另一个应用程序启动或用户返回到主屏幕时,前台应用程序将转移到后台。 ?...图2 一、如果您的应用程序在事件到达时没有运行,系统会启动该应用程序并将其直接移动到后台,顺序如下: 1、系统启动app,按照app启动顺序描述的初始化顺序进行。...二、如果你的应用程序在内存中以及被挂起时,当事件到达,系统将在后台恢复该应用程序,顺序如下: 1、系统恢复app 2、UIKit调用app委托的applicationDidEnterBackground...4、应用程序的快照被拍摄。 5、该应用程序可能会再次暂停。 从前台切换 当另一个应用程序启动或用户返回到主屏幕时,前台应用程序移动到后台,顺序如下: 1、用户退出正在运行的应用程序。
:app前后台切换、锁屏解屏、电话中断后回到app、必须处理的提示框处理后回到app、杀掉进程后重新启动app、有数据交换的页面注意进行前后台切换以及锁屏解屏; 免登录:登录后杀掉进程重新启动app、无网络...、切换用户登录、密码更换、主动退出登录下次启动app、卸载重装、在线更新、覆盖安装、跨版本安装、; 数据更新:手动或自动刷新、从后台切换到前台时数据更新、实时更新、定时更新、数据展示的处理逻辑(服务器获取...涉及软硬件交互时,Back键应具体定义 是否有横屏模式的设计,应用一般需要支持横屏模式,即自适应设计; 在不同的页面是否有导航连接、导航与页面风格一致; 是否需要搜索; 图片质量、同一页面图片颜色不宜过多...当将敏感数据输入到应用程序时, 其不会被储存在设备中 备份应该加密, 恢复数据应考虑恢复过程的异常,通讯中断等, 数据恢复后再使用前应该经过校验 应用程序应考虑系统或者虚拟机器产生的用户提示信息或安全警告...在没有用户明确许可的前提下不损坏删除个人信息管理应用程序中的任何内容 应用程序读和写数据正确。
Activity介绍 l对于任何一个Android应用程序来讲,Activity类都是其核心组成部分。许多时候,在应用程序中,你将会为每一个屏幕显示定义和实现一个Activity。...例如,一个简单的游戏应用程序可能会包含以5个Activity: Activity的生命周期 Android操作系统允许同时运行多个应用程序,但同一时间只能有一个Activity处于前台 Android操作系统跟踪所有运行的...(执行onPause),当一个半透明的Activity打开时,比如,某个后台服务弹出了一个对话框,此时当前的Activity被部分遮挡 当Activity从后台再次被切换到前台来的时候(执行onResume...Activity 比如横竖屏切换时 销毁时,系统会存储一些信息(执行onSaveInstanceState) 可以通过程序存储必要的信息 在重新启动Activity时会传回这些信息...•onRestoreInstanceState和onCreate都会得到这些信息 •onCreate在第一次创建时也会执行 •数据的恢复任务应该在onCreate写更好 有时候,系统为了获得足够的内存会销毁后台的
Activity介绍 l对于任何一个Android应用程序来讲,Activity类都是其核心组成部分。许多时候,在应用程序中,你将会为每一个屏幕显示定义和实现一个Activity。...例如,一个简单的游戏应用程序可能会包含以5个Activity: Activity的生命周期 Android操作系统允许同时运行多个应用程序,但同一时间只能有一个Activity处于前台Android...(执行onPause),当一个半透明的Activity打开时,比如,某个后台服务弹出了一个对话框,此时当前的Activity被部分遮挡 当Activity从后台再次被切换到前台来的时候(执行onResume...•数据的恢复任务应该在onCreate写更好 有时候,系统为了获得足够的内存会销毁后台的Activity 比如横竖屏切换时...和onCreate都会得到这些信息 lonCreate在第一次创建时也会执行 所以数据的恢复任务应该在onCreate写更好 ListActivity是一个默认包含一个ListView
在多任务屏幕中,我们可以看到已放在后台的应用程序列表。我们可以假设这些应用程序仍在后台运行;实际上,由于内存的需求,一些应用程序可能会被系统杀死并重新启动。...用户退出应用程序时 iOS 截取的应用程序截图(查看大图) iOS 使用这些屏幕截图来给人一种假象,即应用程序仍在运行或仍在显示此特定视图,而应用程序可能已被后台终止或重新启动,但此时仍显示相同的屏幕截图...您是否曾体验过,从多任务屏幕恢复应用程序后,该应用程序显示的用户界面与多任务视图中显示的快照有什么不一样? 这是因为应用程序没有实现状态恢复机制,当应用程序在后台被杀死时,显示的数据丢失。...状态保存和恢复可确保应用程序在再次启动时恢复到以前的状态。」 UIKit 为简化状态保护和恢复做了很多工作:它可以在适当的时间自动处理应用程序状态的保存和加载。...可以将恢复标识符组合在一起以形成恢复路径。标识符是通过视图层次结构来分组的,从根视图控制器到当前活动视图控制器。
前言: 当一个应用程序在后台运行时,它在屏幕上是不可见的。当用户启动另一个应用程序或返回到主屏幕时,应用程序从前台切换到后台。当然,应用程序也可以在后台启动或恢复,以处理特定的事件。...失活的操作 当一个正在前台的应用程序移动到后台时,UIKit首先调用applicationWillResignActive:方法来禁用应用程序(使App失活)。...当切换到后台时,您可以在应用程序挂起之前采取一些额外的步骤: 1、清理你的应用程序的用户界面。 隐藏敏感信息,排除警报和其他临时接口,并准备您的接口以获取其快照。 2、释放系统资源共享。...系统在App switcher中使用这个快照图像,当你的应用返回到前台时,它可以替代你的应用的启动屏幕。在app delegate 方法中,通过删除用户界面中的任何敏感数据来保护用户的隐私。...当应用程序返回前台时,您可以决定是立即显示数据,还是先请求用户验证。 而在后台,App必须尽可能占用小一点的内存。如果应用程序管理大量数据,可能需要将数据写到磁盘并从内存中删除。
此外,应用程序可能需要释放OpenGL ES资源,以便这些资源可用于前台应用程序。 iOS会阻止后台应用程序访问图形处理器,以便前台的应用程序始终能够为用户提供出色的体验。...在您的应用程序delegate的applicationWillEnterForeground:方法中,重新创建任何对象并重新启动您的动画计时器 总之,您的应用程序需要调用glFinish函数以确保所有先前提交的命令从命令缓冲区中排出并由...进入后台后,必须避免使用OpenGL ES,直到它移回到前台。 在移至后台之前删除易重建资源 在移动到后台时,您的应用永远不需要释放OpenGL ES对象。通常,您的应用应该避免处理其内容。...当玩家回到游戏时,游戏的资源仍然在记忆中,游戏可以立即恢复。 当用户启动另一个OpenGL ES应用程序时,您的OpenGL ES应用程序处于后台。...您的目标应该是设计您的应用程序成为一个”好公民”:这意味着尽可能缩短移动到前台所需的时间,同时减少其在后台的内存占用量。
当下面任何一个条件满足时,都可以考虑将进程移到前台。...(2)可见(Visible)进程 它有一个可以被用户从屏幕上看到的 Activity,但不在前台——其 onPause()方法被调用。...活动被“覆盖”的情景:Android 的活动一般都占据一个完整的屏幕,从当前活动启动另外一个活动时,另一个活动将被启动到前台(Foreground),当前活动转入后台(Background),这时活动的...在转入后台时,onStop()是否被调用取决于活动是否被完全覆盖,在新的活动有透明部分时,转入后台的活动依然“可见”,其他情况下(较多数的情况)活动均进入不可见状态(被完全覆盖)。...活动被恢复的情景:当界面上最前面的活动退出后,它所覆盖的活动将被恢复,这时 onResume()方法将被调用,活动重新转入前台运行。
手势导航 引入手势导航后,应用程序不仅可以实现全屏幕的内容显示,还能最大限度地减少系统导航键的可见程度,这对于当下主流的全面屏手机尤为重要。...用户可以从左下角或右下角斜向滑动以启动 Google Assistant 助手,在触发的角落会有相应的 “小手柄” 指示器来作为视觉提示。...Security Updates 随着这一新功能发布,通过 Google Play Store,安全补丁将自动推送到手机更新应用,更新将在后台运行,并在下次重新启动设备时加载,而不必等待完整的操作系统更新...当你没有使用的应用程序访问你的位置时,你也会收到提醒,以决定是否继续分享。...手势导航将变成Android 10的默认导航模式,从屏幕底部向上滑动可回到主界面,上滑并按住松开可切换后台App,从左侧或右侧边缘向相反方向滑动可返回上一桌面。
4、UIKit从主故事板或nib文件加载应用程序的默认界面。...初始化完成后,系统将应用程序移动到活跃(前台)状态或后台状态。当你的应用程序移动到活跃状态时,它的窗口会出现在屏幕上,并开始响应用户的交互。...当你的应用程序移动到后台状态时,它的窗口是隐藏的,它只会运行一小段时间,然后才会被暂停。 无论应用程序是在前台还是在后台启动,大多数启动时的初始化代码都应该是相同的。...但是,你有一些自定义任务,你只希望在移动到前台或者后台时执行,请检查下UIApplication对象的applicationState属性,UIKit将该属性设置为UIApplicationStateInactive...用于移动到前台的应用程序,而UIApplicationStateBackground用于移动到后台的应用程序。
后台读取 后台读取可以让用户在任何时候都可以快速读取标签,而无需先打开APP。在支持后台读取的设备上,系统会在屏幕亮起时自动查找附近兼容的标签。...例如:当游戏角色从树上跳下时,玩家感觉到的冲击力可能比角色跳到位时要强。...在iPad上,源位置和目标位置也可以存在于不同的应用程序中,从而实现跨应用程序交互,例如将照片从Safari中的网页拖到Mail中的新消息。...拖动内容时,用户可以通过多任务处理,退出到主屏幕或从屏幕底部向上滑动以显示Dock来访问另一个应用程序。 支持拖放 使拖放可用于所有可选和可编辑的内容。 如果适用,允许将内容拖放到控件上。...确定在应用程序中拖放内容是应该移动还是复制。 允许用户撤消拖放操作。 考虑启用弹性加载。 被拖动的内容 如有必要,自定义拖动项目预览。 尽可能提供从最高到最低保真度排序的拖动数据的多种表示形式。
7)当将敏感数据输人到应用程序时, 其不会被储存在设备中 8)备份应该加密, 恢复数据应考虑恢复过程的异常?...3) app切换到后台,再回到前台时,注意程序是否崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。...4) 手机锁屏解屏后进入app注意是否会崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。...5) app切换到后台,再切回前台的校验 6) 切换到后台,再切换回前台的测试 7) 密码更换后,检查有数据交换时是否进行了有效身份的校验 8) 支持自动登录的应用在进行数据交换时,检查系统是否能自动登录成功并且数据操作无误...1) 在无网络情况可以浏览本地数据 2) 退出app再开启app时能正常浏览 3) 切换到后台再切回前台可以正常浏览 4) 锁屏后再解屏回到应用前台可以正常浏览 5) 在对服务端的数据有更新时会给予离线的相应提示
7)当将敏感数据输人到应用程序时,其不会被储存在设备中 8)备份应该加密, 恢复数据应考虑恢复过程的异常通讯中断等,数据恢复后再使用前应该经过校验 9)应用程序应考虑系统或者虚拟机器产生的用户提示信息或安全替告...3) app切换到后台,再回到前台时,注意程序是否崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。...4) 手机锁屏解屏后进入app注意是否会崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。...5) app切换到后台,再切回前台的校验 6) 切换到后台,再切换回前台的测试 7) 密码更换后,检查有数据交换时是否进行了有效身份的校验 8) 支持自动登录的应用在进行数据交换时,检查系统是否能自动登录成功并且数据操作无误...1) 在无网络情况可以浏览本地数据 2) 退出app再开启app时能正常浏览 3) 切换到后台再切回前台可以正常浏览 4) 锁屏后再解屏回到应用前台可以正常浏览 5) 在对服务端的数据有更新时会给予离线的相应提示
提供启动屏幕。系统会在应用启动时显示启动屏幕,并迅速将其替换为应用的第一个屏幕。启动屏幕的功能是给人一种印象,即您的应用程序快速且响应迅速,同时允许加载初始内容。...如果您必须在应用程序中包括这些项目,请以平衡的方式集成它们,而不会破坏用户体验。(实际是大多数应用都在登录页面显示协议和免责声明,并要求用户进行勾选) 当您的应用重启时,恢复以前的状态。...重新启动会花费一些时间,并使应用看起来不可靠且难以使用。如果应用程序存在内存或其他问题,经常导致必须通过重启才能恢复,那一定要尽快解决掉这些问题。 避免要求别人对应用程序进行过快或过高的评分。...后台也要尽可能使用预加载,例如在播放动画或用户正在操作导航栏的选项卡时,后台预先加载出来即将播放和显示的内容。 用引导或娱乐的方式来掩盖加载的时间。...人们通过以下方式关闭卡片: 从屏幕顶部向下滑动 卡内容滚动到顶部时,可以从屏幕任意位置向下滑动 轻按一个按钮 工作表常用在无法实现复杂任务的、非沉浸式的模式和内容。
Android 12行为变更:面向所有应用 用户体验升级 沉浸式手势导航改进 从Android 10 开始,Android 系统就已支持手势导航,致力于给用户带来沉浸式的全新体验。...在之前版本的系统下,用户启动安卓的沉浸模式,默认需要的手势操作是:从屏幕侧方滑入,退出沉浸模式,然后再返回上一个界面。...ADB backup 限制 Android 12 限制了 adb backup 命令行的默认行为 (该命令行是用来备份恢复数据的),对应用程序数据adb backup有依赖的开发者可以在清单文件中设置...组件需要添加 exported 配置 target=12时,使用的activity 、service或者广播有用到 intent filters ,则需声明 android:exported 属性。...性能 前台服务启动限制 以 Android 12 为目标的应用程序,无法在后台运行时启动前台服务,应用程序在后台运行时,可考虑使用 WorkManager 执行任务。
6. onRestart()**作用**: 在 Activity 从停止状态重新启动时调用。通常在这里重新初始化一些在 onStop() 中释放的资源。...**调用时机**: Activity 从停止状态重新启动时调用。7. onDestroy()**作用**: 这是 Activity 生命周期的最后一个方法,在 Activity 被销毁之前调用。...这些数据可以在 onCreate() 或 onRestoreInstanceState() 中恢复。**调用时机**: Activity 可能被系统销毁时调用(例如屏幕旋转或内存不足时)。...导航和标签当你需要在同一个 Activity 中实现导航或标签切换时,Fragment 可以帮助你管理不同的视图。例如,使用 ViewPager 和 TabLayout 实现标签切换。4....复用性和维护性当你需要提高代码的复用性和维护性时,Fragment 可以帮助你将 UI 逻辑分离到不同的模块中,使得代码更易于管理和维护。5.
创新与新体验 可折叠 基于强大的多窗口支持,Android 10扩展了跨应用程序窗口的多任务处理,并在设备折叠或展开时提供屏幕连续性来维护应用程序状态。...手势导航 引入手势导航后,应用程序不仅可以实现全屏幕的内容显示,还能最大限度地减少系统导航键的可见程度,这对于当下主流的全面屏手机尤为重要。...隐私与安全 隐私是Android 10的核心关注点,从平台中更强的保护到考虑隐私的新功能。...阻止不必要的干扰 Android 10防止应用程序从后台启动,而后台的应用程序会出人意料地跳到前台,并从另一个应用程序转移注意力。 安全 在Android上,我们一直在评估系统的安全性。...手势导航:在你的应用程序中支持手势导航,从边缘到边缘,并确保你的自定义手势是系统导航手势的补充。 折叠优化:通过优化可折叠设备,为当今的创新设备提供无缝体验。
也就是说,你可以声明你的app支持蓝牙后台执行模式,这允许你的app在需要处理连接的那个蓝牙设备的关联事件时,系统可以把你的app从悬挂状态唤醒。...用户可以通过这些提示来决定要不要在某些时候把app从后台拉到前台来。...当一个这样的任务完成时,系统重启你的app到后台状态并且给它一个机会保存它的状态以处理适当的事件。...,系统为周边管理者跟踪以下信息: 周边正在广告的数据 周边管理者公开在设备数据库的服务和特征 已经订阅某些特征数据的中心 当你的app在后台被系统重启(比方说你的app搜索的那个周边设备被发现了),你可以重新启动应用程序的中央和周边管理器并恢复其状态...例如,你的应用程序在探索连接的周边设备的数据的过程中可能已被终止。当你的应用程序使用此外设进行恢复时,它将不知道它在终止时的发现过程有多远。您将需要确保您从发现过程中离开的地方开始。
怎么处理上述问题呢,官方给出的建议是先请求前台位置信息访问权限,再请求后台位置信息访问权限;单独请求后台位置信息访问权限。...android:foregroundServiceType="location|camera|microphone" /> 当应用程序在后台运行启动前台服务时,前台服务有如下限制...从不同的可见应用程序发送的启动 。 该服务由在设备所有者模式下运行的设备策略控制器(DPC)应用程序启动。 该服务由提供VoiceInteractionService。...当应用停止截取屏幕时,就会失去该权限。此用例主要用于游戏直播应用。...除非设备恢复出厂设置,否则此标识符对于SIM是不变的。 Toast 从Android 11开始 ,从后台发送自定义view的Toast消息系统会进行屏蔽。前台使用不受影响。
领取专属 10元无门槛券
手把手带您无忧上云