executor.shutdown() 在服务 onDestroy() 中

executor.shutdown() in service onDestroy()

我希望我的遗嘱执行人 运行 直到我的服务不再 运行ning 为止。

我想到的合乎逻辑的解决方案是在服务的 onDestroy()

上执行 executor.shutdown()

该行为的后果是什么?

我知道当我终止一个应用程序时,它的服务不能保证通过 onDestroy(),因此执行者永远不会执行 shutdown()

如果该服务是前台服务,是否可以解决该问题? 无论如何,这是正确的工作方式吗?

关于我正在尝试做什么的一般信息 - 我打算访问我的服务上的一个方法,该方法将 change/add 任务交给执行者。在我不再使用该服务之前,我需要它充当“listener”,这就是为什么我不能在任何其他地方而不是 onDestroy().[=17= 关闭它的原因]

后果取决于您的任务在执行程序中执行的操作。如果没有通知任务关闭,它们将保持 运行 因为关闭只是确保不能提交新任务。 你 can do is 你将执行程序创建为守护进程。 或者您可以按照 orderly shutdown

的建议

需要注意的重要一点是,您的任务不应让您的数据处于损坏状态,因为它们可以随时关闭。如果您正在更新数据库,请使用事务;如果您正在写入文件或套接字,请使用适当的预防措施。