java - 当应用程序从 Android 上的任务管理器中被杀死时,代码将在哪里停止运行

标签 java android

如果用户正在运行我的应用程序并决定通过任务管理器终止它,是否可以保证在进程终止之前将执行多少代码?

我觉得它可能会在任意行停止运行,但我想我真的不知道这个问题的答案。

一个示例用例是停止和重新启动后台警报。如果我想取消闹钟,做一些工作,然后重置闹钟,我觉得应用程序有可能在“取消闹钟”步骤之后但在“重置闹钟”步骤之前停止运行。这会让我处于一种我不想进入的状态,因为我总是希望我的闹钟在未来响起。 (请记住,这只是一个示例,我并不是在寻找针对此特定案例的解决方法)。

我能做些什么来确保我的 java 代码作为类似于数据库事务的“事务”运行,以便它要么全部运行,要么都不运行?

最佳答案

If a user is running my app and decides to kill it via the task manager, are there any guarantees about how much code will be executed before the process dies?

不是真的。如果用户选择在“设置”中使用“强制停止”,您的进程将立即终止,并带有极大的偏见。在您的进程终止的其他情况下,Android 通常 会销毁未完成的 Activity 和服务,但这也不能保证,特别是如果 Android 急于释放系统 RAM(例如,处理来电)。从概览屏幕中删除任务在这里并没有什么特别之处。

Is there anything I can do to ensure that code my java code runs as a 'transaction' similar to a db transaction so that it either all runs or none of it runs?

没有。

关于java - 当应用程序从 Android 上的任务管理器中被杀死时,代码将在哪里停止运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33760252/

相关文章:

android - Eclipse 的设备列表中未显示 Moto G 移动设备

java - 在 Eclipse 中运行 Android 项目时出现 IOException

android - 使用 Fresco 时如何将图像保存到 SD 卡?

java - 在这种情况下如何使用 fireTableDataChanged ? (或者我应该使用什么其他方法?)

java - BufferedReader错误

java - Cucumber-JVM 3 - 使用 Maven 的 Allure 2 测试报告

java - 如何在 Java 中设置 WriteConcern 以非常安全地写入 MongoDB 副本集

android - 向自定义 TextView 添加文本是不可见的

android - RxAndroidBle:设置通知,写入特性并等待通知继续

java - 执行 sqlite 查询,没有任何反应