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

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

最佳答案

What happens when I never call shutdown on ExecutorService?

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

The problem is, on Android, detecting the shutdown of an application is a bit tricky

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

So what would happen if I never shutdown ExecutorService on an Android application?

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

如果您出于某些原因无法控制传入的任务 - 然后通过关闭您的执行程序,您还可以防止在您的应用程序应该关闭时处理新任务,您可以找到此方法 here .

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

https://stackoverflow.com/questions/34301199/

相关文章:

java - 改造同步调用异步调用

asp.net - 在 asp.net 发布期间不要删除特定文件?

text - 文本分类的 TensorFlow 示例 - 如何评估您自己的文本?

arrays - Mpi4Py - 发送无副本的 numpy 子数组(非连续内存)

python - 独立于数据集单位的 Matplotlib 轴限制和文本位置

php - 数据表在服务器端laravel中获取的最大记录数

java - 我正在尝试使用 tomcat 实现有弹性的 caSTLe,但出现 ClassNotFo

android - Logcat 警告 :Drawable android:drawable/tex

php - Yii session 存储、生命周期和 cookie

lua - nodemcu如何减少获取ip地址所需的时间