当我从未在ExecutorService上调用shutdown时会发生什么?

时间:2015-12-15 23:09:41

标签: java android executorservice

我正在尝试将ExecutorService用于Android项目。我需要它在应用程序的持续时间内运行,并在应用程序关闭时关闭。问题是,在Android上,检测应用程序的关闭有点棘手。那么如果我从未在Android应用程序上关闭ExecutorService会发生什么?

1 个答案:

答案 0 :(得分:0)

  

当我从未在ExecutorService上调用shutdown时会发生什么?

你会浪费一些资源 - 这些资源有多大取决于你的执行者。您可以阅读docs“应关闭未使用的executorService以允许回收其资源。”

  

问题是,在Android上,检测应用程序的关闭有点棘手

实际上你永远不应该自己关闭你的应用程序,有很多方法可以做到这一点 - 但是它们作为反模式是有效的。你通常通过关闭所有活动来“关闭”Android应用程序,或者通过在启动活动上实现双后方习惯来“关闭”。最好认为Android应用程序在启动后一直运行。通过关闭所有活动,您的流程可能仍会长时间运行。 Android可能会在一段时间后终止您的进程,或者长时间保留它。

  

那么如果我从未在Android应用程序上关闭ExecutorService会发生什么?

浪费资源,android可能更有可能杀死你的进程,使你的应用程序下次启动的时间更长(但是多久,我不知道) - 但一如既往取决于你的应用程序。

如果由于某些原因你不能控制传入的任务 - 那么通过关闭执行程序,你也可以阻止在应用程序关闭时处理新任务,你可以找到这个here的方法。

当您的执行程序处于服务内部并且您想要停止该服务时,这可能很有用。然后它建议优雅地释放资源。你也可能有一些代码依赖于要完成的所有任务等等......