Что происходит, когда я никогда не вызываю shutdown на ExecutorService?

Я пытаюсь использовать ExecutorService для проекта Android. Мне нужно, чтобы он работал во время работы приложения и завершал работу, когда приложение закрывалось. Проблема в том, что на Android обнаружение выключения приложения немного сложнее. Так что же произойдет, если я никогда не выключу ExecutorService в приложении Android?

1 ответ

Что происходит, когда я никогда не вызываю shutdown на ExecutorService?

вы будете тратить некоторые ресурсы, которые он хранит - насколько велики эти ресурсы, зависит от вашего исполнителя. Вы можете прочитать в документации: "Неиспользуемый executorService должен быть закрыт, чтобы разрешить восстановление его ресурсов".

Проблема в том, что на Android обнаружение выключения приложения немного сложнее

на самом деле вы никогда не должны останавливать процесс приложения самостоятельно, есть способы сделать это, но они считаются антипаттернами. Вы обычно "закрываете" приложение для Android, закрывая все действия или применяя идиому обратного выражения при запуске действия. Лучше думать, что приложение для Android работает все время после его запуска. Закрыв все действия, ваш процесс может продолжаться долгое время. Android может убить ваш процесс через некоторое время или оставить его на долгое время.

Так что же произойдет, если я никогда не выключу ExecutorService в приложении Android?

растрата ресурсов, Android может с большей вероятностью убить ваш процесс, увеличивая время запуска вашего приложения в следующий раз (но насколько дольше, я понятия не имею) - но, как всегда, это зависит от вашего приложения.

Если по каким-то причинам вы не управляете входящими задачами - тогда, закрыв своего исполнителя, вы также предотвращаете обработку новых задач, когда ваше приложение должно быть закрыто, вы можете найти способ для этого здесь.

Это может быть полезно, когда ваш исполнитель находится внутри службы, и вы хотите остановить эту службу. Затем его предложили изящно выпустить ресурсы. Также у вас может быть некоторый код, который зависит от всех задач, которые будут выполнены, и т. Д...

Другие вопросы по тегам