executor.shutdown() 在服务 onDestroy() 中
executor.shutdown() in service onDestroy()
我希望我的遗嘱执行人 运行 直到我的服务不再 运行ning 为止。
我想到的合乎逻辑的解决方案是在服务的 onDestroy()
上执行 executor.shutdown()
该行为的后果是什么?
我知道当我终止一个应用程序时,它的服务不能保证通过 onDestroy()
,因此执行者永远不会执行 shutdown()
如果该服务是前台服务,是否可以解决该问题?
无论如何,这是正确的工作方式吗?
关于我正在尝试做什么的一般信息 - 我打算访问我的服务上的一个方法,该方法将 change/add 任务交给执行者。在我不再使用该服务之前,我需要它充当“listener
”,这就是为什么我不能在任何其他地方而不是 onDestroy()
.[=17= 关闭它的原因]
后果取决于您的任务在执行程序中执行的操作。如果没有通知任务关闭,它们将保持 运行 因为关闭只是确保不能提交新任务。
你 can do is 你将执行程序创建为守护进程。
或者您可以按照 orderly shutdown
的建议
需要注意的重要一点是,您的任务不应让您的数据处于损坏状态,因为它们可以随时关闭。如果您正在更新数据库,请使用事务;如果您正在写入文件或套接字,请使用适当的预防措施。
我希望我的遗嘱执行人 运行 直到我的服务不再 运行ning 为止。
我想到的合乎逻辑的解决方案是在服务的 onDestroy()
executor.shutdown()
该行为的后果是什么?
我知道当我终止一个应用程序时,它的服务不能保证通过 onDestroy()
,因此执行者永远不会执行 shutdown()
如果该服务是前台服务,是否可以解决该问题? 无论如何,这是正确的工作方式吗?
关于我正在尝试做什么的一般信息 - 我打算访问我的服务上的一个方法,该方法将 change/add 任务交给执行者。在我不再使用该服务之前,我需要它充当“listener
”,这就是为什么我不能在任何其他地方而不是 onDestroy()
.[=17= 关闭它的原因]
后果取决于您的任务在执行程序中执行的操作。如果没有通知任务关闭,它们将保持 运行 因为关闭只是确保不能提交新任务。 你 can do is 你将执行程序创建为守护进程。 或者您可以按照 orderly shutdown
的建议需要注意的重要一点是,您的任务不应让您的数据处于损坏状态,因为它们可以随时关闭。如果您正在更新数据库,请使用事务;如果您正在写入文件或套接字,请使用适当的预防措施。