如果用户正在运行我的应用程序并决定通过任务管理器终止它,是否可以保证在进程终止之前将执行多少代码?
我觉得它可能会在任意行停止运行,但我想我真的不知道这个问题的答案。
一个示例用例是停止和重新启动后台警报。如果我想取消闹钟,做一些工作,然后重置闹钟,我觉得应用程序有可能在“取消闹钟”步骤之后但在“重置闹钟”步骤之前停止运行。这会让我处于一种我不想进入的状态,因为我总是希望我的闹钟在未来响起。 (请记住,这只是一个示例,我并不是在寻找针对此特定案例的解决方法)。
我能做些什么来确保我的 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/