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

Android 生命周期备忘录 — 第一部分:单一 Activities

activity 的应用被用户开启,结束,和重启时发生了什么: ?...场景 1:应用被终止并且重启 状态处理 onSaveInstanceState 不会被调用 (因为 activity 被结束了,你不需要保存状态) onCreate 没有 Bundle 对象,如果重新打开应用的话...假设应用的进程没有被终止,这个应用的实例会常驻在内存,保存所有状态。当这个 activity 回到前台工作时,它会恢复这些状态。你不需要重新初始化这些之前已生成的组件。...activity 会被完全 destroy,但是 activity 的状态会被保存下来并在下一个实例中恢复。...通知。用户收到一个新通知或者拉下通知栏不会暂停被遮挡住的 activity。 延伸阅读 Android 生命周期备忘录 第二部分 — 多个 activities

63030

Android 生命周期备忘录 — 第一部分:单一 Activities

activity 的应用被用户开启,结束,和重启时发生了什么: 场景 1:应用被终止并且重启 状态处理 onSaveInstanceState 不会被调用 (因为 activity 被结束了,你不需要保存状态...因为先前的 activity 结束了,也不需要恢复状态。...假设应用的进程没有被终止,这个应用的实例会常驻在内存,保存所有状态。当这个 activity 回到前台工作时,它会恢复这些状态。你不需要重新初始化这些之前已生成的组件。...activity 会被完全 destroy,但是 activity 的状态会被保存下来并在下一个实例中恢复。...通知。用户收到一个新通知或者拉下通知栏不会暂停被遮挡住的 activity。

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

    Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?

    特殊情况: 1)如果用户通过“备份与恢复”功能将 App 传输到一个 Android14 的设备上,则此 App 的该权限默认仍是关闭的; 2)如果一个 App 已经开启了该权限,当设备升级到 Android14...动态广播当 App 进入缓存态时将会入队保存 在 Android14 中,我们使用 Context 上下文注册的动态广播接收器,可以在 App 进入缓存状态时,将已发送还未接收的广播放入到一个队列中保存...而在 Manifest 文件中注册的静态广播接收器,则不能进入队列,它们会在 App 从缓存状态中被移除销毁时,进行广播传递。 “什么是缓存状态下的 App?...Android 旨在让缓存应用在后台运行,并在系统需要内存时自动终止它们。...如果您的应用不必要地终止其他应用,则由于之后需要完全重启这些应用,因此可能会降低系统性能并增加耗电量,这比恢复现有缓存应用所消耗的资源要多得多。

    4.6K10

    Android 进程保活招式大全

    通常会有很多后台进程在运行,因此它们会保存在 LRU 列表中,以确保包含用户最近查看的 Activity 的进程最后一个被终止。...如果某个 Activity 正确实现了生命周期方法,并保存了其当前状态,则终止其进程不会对用户体验产生明显影响,因为当用户导航回该 Activity 时,Activity 会恢复其所有可见状态。...方案实现挑战 从 Android2.3 开始调用 setForeground 将后台 Service 设置为前台 Service 时,必须在系统的通知栏发送一条通知,也就是前台 Service 与一条可见的通知时绑定在一起的...通过反编译第三方 Top 应用,如:手机QQ、微信、支付宝、UC浏览器等,以及友盟、信鸽、个推等 SDK,找出它们外发的广播,在应用中进行监听,这样当这些应用发出广播时,就会将我们的应用拉活。...方案适用范围 如下两种情况无法拉活: Service 第一次被异常杀死后会在5秒内重启,第二次被杀死会在10秒内重启,第三次会在20秒内重启,一旦在短时间内 Service 被杀死达到5次,则系统不再拉起

    3.2K70

    Android中的进程和线程

    当这些组件需要再次运行时,系统将为它们重启进程。 决定终止哪个进程时,Android 系统将权衡它们对用户的相对重要程度。...通常会有很多后台进程在运行,因此它们会保存在 LRU (最近最少使用)列表中,以确保包含用户最近查看的 Activity 的进程最后一个被终止。...如果某个 Activity 正确实现了生命周期方法,并保存了其当前状态,则终止其进程不会对用户体验产生明显影响,因为当用户导航回该 Activity 时,Activity 会恢复其所有可见状态。...有关保存和恢复状态的信息,请参阅Activity文档。 5.空进程 不含任何活动应用组件的进程。保留这种进程的的唯一目的是用作缓存,以缩短下次在其中运行组件所需的启动时间。...要了解如何在这种重启情况下坚持执行任务,以及如何在 Activity 被销毁时正确地取消任务,请参阅书架示例应用的源代码。

    1.2K30

    Spark Streaming 容错的改进与零数据丢失

    然而,从有些数据源导入数据时可能存在故障恢复以后丢失数据的情况。...这种结构允许把应用的状态(亦称checkpoint)周期性地保存到可靠的存储空间中,并在driver重新启动时恢复该状态。...当driver进程失败时,所有在standalone/yarn/mesos集群运行的executor,连同它们在内存中的所有数据,也同时被终止。...它们作为长驻运行任务在executor中运行,负责从数据源接收数据,并且在数据源支持时,还负责确认收到的数据。...当一个失败的driver重启时,下列事情出现(参考下一个图示)。 恢复计算(橙色箭头)——使用检查点信息重启driver,重新构造上下文并重启接收器。

    1.2K20

    Spark Streaming容错的改进和零数据丢失

    这种结构允许把应用的状态(亦称checkpoint)周期性地保存到可靠的存储空间中,并在driver重新启动时恢复该状态。...当driver进程失败时,所有在standalone/yarn/mesos集群运行的executor,连同它们在内存中的所有数据,也同时被终止。...假如在施加操作的中间系统失败了,通过读取日志并重新施加前面预定的操作,系统就得到了恢复。下面让我们看看如何利用这样的概念保证接收到的数据的持久性。...它们作为长驻运行任务在executor中运行,负责从数据源接收数据,并且在数据源支持时,还负责确认收到的数据。...当一个失败的driver重启时,下列事情出现(参考下一个图示)。 恢复计算(橙色箭头)——使用检查点信息重启driver,重新构造上下文并重启接收器。

    78390

    Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

    当然了,应对这种情况,Android给出了几种方案: a、如果是少量数据,可以通过onSaveInstanceState()和onRestoreInstanceState()进行保存与恢复。...这里,如果在异步数据完成加载之后,旋转屏幕,使用上述a、b两种方法都不会很难,无非是保存数据和恢复数据。...这种方式适用于比较大的数据的存储与恢复。 注:这里也没有考虑加载时旋转屏幕,问题与上面的一致。...从效果图可以看到,无论如何旋转不会重启Activity. 效果图: 6、旋转屏幕的最佳实践 下面要开始今天的难点了,就是处理文章开始时所说的,当异步任务在执行时,进行旋转,如果解决上面的问题。...,相信看到这,已经知道经常上述问题的一个核心了,保存一个异步任务,在重启时,继续这个任务。

    2.1K20

    现代 WorkManager API 已发布

    近期也将会有另一篇关于在 Android Studio 中如何更好地使用 WorkManager 的文章,敬请关注。...于是,回调中携带的信息就可以被用来生成一条通知。 有了这些辅助方法,我们就可以将 WorkManager 执行长时间运行工作所需要的 ForegroundInfo 实例保存起来。...由于每次回调发生时都会提供一些最新的进度信息,所以我们可以利用这些信息来构建通知,并调用 setForeground 方法来向用户显示这些通知。...下载完成后,Worker 只需要返回成功即可,随后 WorkManager 会将 Worker 的执行与前台服务解耦分离、清理通知消息,并在必要时结束相关的服务。...在早于 Android 12 的 API 版本中,加急工作都是由前台服务执行的,而从 Android 12 开始,它们将由加急作业 (expedited job) 实现。

    1.3K20

    七种方法绕过安卓手机锁屏

    如果服务在查找你设备时遇到问题,我们可以多刷新几次浏览器,如果你的手机兼容,应该会在 5 次左右 尝试后取得连接。 ? 在单击“锁定”按钮后,系统将提示您输入新密码。 这将重置你之前所设置的锁屏密码。...并在右侧的第一个输入框中,输入新的 PIN 码。然后点击屏幕底部的 “Lock(锁定)” 按钮。 这里大概需要等待一两分钟时间,设置成功后你就可以使用该 PIN码 来解锁设备了!...此时我们将进入 Android 的 启动程序菜单。按两次音量减键,高亮显示“恢复模式”选项,然后按电源键选中该项。 接下来,我们同时按住音量加键和电源键进入到“恢复模式”。...然后,使用音量键来高亮显示 “擦除数据/恢复出厂设置” 这个选项,最后按电源键选中该项。 ? 当我们成功执行完以上操作后,我们通过音量键选中最上面的 系统重启选项,来重启我们的手机。...拉下通知栏,然后点击设置图标,系统将提示你输入密码。 长按输入字段并选择“粘贴”,然后重复此过程多次。

    5K80

    Android后台杀死系列之二:ActivityManagerService与App现场恢复机制

    AMS与后台杀死 本篇是Android后台杀死系列的第二篇,主要讲解ActivityMangerService是如何恢复被后台杀死的进程的(基于4.3 ),在开篇 FragmentActivity及PhoneWindow...有这么几个问题可能需要解决: Android框架层(AMS)如何知道App被杀死了 App被杀前的场景是如何保存的 系统(AMS)如何恢复被杀的App 被后台杀死的App的启动流程跟普通的启动有什么区别...Activity的恢复顺序为什么是倒序恢复 系统(AMS)如何知道App被杀死了 首先来看第一个问题,系统如何知道Application被杀死了,Android使用了Linux的oomKiller机制...到这里,我们应该就了解了, Android是如何在预防的情况下保存场景 AMS如何知道APP是否被后台杀死 AMS如何根据ActivityStack重建APP被杀死时的场景 到这里ActivityManagerService...Android后台杀死恢复原理:Application进程被Kill,但现场被AMS保存,AMS能根据保存恢复Application现场

    3.5K40

    使用Lifecycle-Aware组件优化项目

    bundle中重新获取,但这一方法仅仅适合一些简单的UI状态,对于列表型这种庞大的数据类型并不适合 Activity或Fragment经常会做一些异步的耗时操作,随之就需要管理这些异步操作得到的数据,并在...destroyed的时候清理它们,从而避免内存溢出这类问题的发生。...但是这样的处理会随着项目扩大而变得十分复杂 Activity或Fragment本身需要处理很多用户的输入事件并和操作系统打交道,当它们还要花时间管理那些数据资源时,它们所在的类就会变得异常庞大,造就出所谓的...ViewModel生命周期 LiveData LiveData 是一个可以保存数据和观察数据变化的组件。...LiveData的优势: 确保数据源跟UI展示一致——当数据源变化时,LiveData会通知观察者更新UI,前提是组件在激活状态下。

    92320

    安卓 topic-UI-设置 settings

    决定要使用的方法以及如何拆分设置时,应遵循 Android 设计的设置指南中的准则。...构建自定义首选项 Android 框架包括各种 Preference 子类,您可以使用它们为各种不同类型的设置构建 UI。...在系统请求时提供默认值。 如果 Preference 提供自己的 UI(例如对话框),请保存并恢复状态以处理生命周期变更(例如,用户旋转屏幕)。 下文介绍如何完成所有这些任务。.... } 保存设置的值 初始化当前值 提供默认值 保存和恢复首选项的状态 正如布局中的 View 一样,在重启 Activity 或片段时(例如,用户旋转屏幕),Preference 子类也负责保存并恢复其状态...要正确保存并恢复Preference 类的状态,您必须实现生命周期回调方法 onSaveInstanceState() 和 onRestoreInstanceState()。

    3.1K10

    android之Fragment(官网资料翻译)

    通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化....注意 : 每一个fragment都需要一个唯一的标识,如果activity重启,系统可以用来恢复fragment(并且你也可以用来捕获fragment来处理事务,例如移除它.)...举个例子, 这里是如何将一个fragment替换为另一个, 并在后台堆栈中保留之前的状态: [java] view plain copy // Create new fragment and...你可以在fragment的 onSaveInstanceState() 期间保存状态, 并可以在 onCreate(), onCreateView() 或 onActivityCreated() 期间恢复它...然而, 仅当你在一个事务期间移除fragment时,显式调用addToBackStack()请求保存实例时,才被放到一个由宿主activity管理的后台堆栈.

    68420

    Android 深入理解Loader机制

    一 Loader Android的装载器(loader)是从Android 3.0新引入的API , 主要完成单线程耗时数据异步装载功能,并在数据有更新自动通知UI刷新的作用。...4 拓展 1》 用来自动刷新ContentPorvider 我们使用CurSorLoader时大家都会考虑一种情况的处理—–当数据库发生变化时如何自动刷新当前UI,数据库在数据改变时通过ContentPorvider...和ContentResolver发出通知,接着ContentProvider通知Cursor的观察者数据发生了变化,然后Cursor通知CursorLoader的观察者数据发生了变化,CursorLoader...的唯一LoaderManager;在Activity配置发生变化时,Activity在destory前会保存mAllLoaderManager,当Activity再重新创建时,会在Activity的onAttcach...()、onCreate()、performStart()方法中恢复mAllLoaderManager。

    90920

    Android Service重启恢复(Service进程重启)原理解析

    开始,主要看看启动的时候是如何为恢复做准备的 ComponentName startServiceLocked(IApplicationThread caller, Intent service,...Intent(重启可能比较慢) 除了上面的情况,基本都不重启,启动分析完成,场景构建完毕,下面看看如何恢复的,假设APP被后台杀死了,Service(以及进程)如何重启的呢?...APP被杀后Service如何重启 Binder有个讣告机制,Server死后,会向Client发送一份通知,在这里,其实就是APP死掉后,会像ActivityManagerService发送一份讣告通知...,如果是1小时,那么它就在一小时后启动, ?...可以用来做包活,但是不推荐,而且国内也不怎么好用(MIUI、华为等都对AMS做了定制,限制较多) 作者:看书的小蜗牛 Android Service重启恢复(Service进程重启)原理解析 仅供参考

    5.7K40

    安卓中activity的生命周期_activity生命周期调用顺序

    ,Window再委托给顶层容器DecorView去保存数据,最后顶层容器再一一通知其子View来保存数据)。...和onCreate,用于取出数据并恢复(Google建议我们采用前者去恢复数据)。...若android:configChanges=“orientation|screenSize”,那么在min以及target均低于13时,不会导致重启,否则导致Activity重启。...需要在android:configChanges 中同时添加locale和layoutDirection。在不退出应用的情况下切换到Settings里切换语言,发现该Activity还是重启了。...Android为什么要设计一个生命周期呢 Google官方文档解释说,确保提供一个流畅的用户体验,在Activity切换时,以及你的Activity意外销毁的情况下,保存好Activity状态。

    91610
    领券