Im пишет SDK, который имеет одноэлементный класс с ExecutorService. Это выглядит примерно так:Как отключить ExecutorService в приложении для Android
public class MySingleton {
private static MySingleton mInstance;
private ExecutorService mExecutorService;
private MySingleton() {
mExecutorService = Executors.newSingleThreadExecutor();
}
// ...
public void doSomething(Runnable runnable) {
mExecutorService.execute(runnable);
}
}
Этот класс SDK предназначен для использования в течение всего приложения для выполнения задач/Runnables и функция йоЗотеЬЫпда() состоит в очереди и запускать все Runnables в одном потоке.
Но одна вещь, которую я не мог понять, - это позвонить в Исполнительный центр. shutdown() способ. Если я называю это так:
public void doSomething(Runnable runnable) {
if (mExecutorService.isTerminated()) {
mExecutorService = Executors.newSingleThreadExecutor();
}
mExecutorService.execute(runnable);
mExecutorService.shutdown();
}
Было бы поражение цели использования одного тему, потому что, если старая Runnable все еще работает, когда йоЗотеЬЫпд() называется 2-й раз, может быть две разные темы, работающих одновременно. Конечно, у меня может быть функция, которая вручную отключает ExecutorService, но требование, чтобы пользователь SDK явно вызывал функцию выключения, не казался подходящим.
Может ли кто-нибудь показать мне несколько советов о том, когда/как вызвать ExecutorService.shutdown() в приложении для Android? Спасибо
Вы должны завершить работу, когда закончите пользоваться сервисом. Предположительно, это когда ваше приложение выходит. – shmosel
@shmosel Спасибо за ответ. Я понимаю, что Im должен был остановиться, когда я закончил службу. Но мой вопрос был скорее о том, как это будет выглядеть в платформе Android? Есть ли слушатель для прослушивания, когда приложение закрывается? (есть onStop() и onDestroy(), но они предназначены для Деяний). – baekacaek