Стоимость содержания HandlerThread в живых
В моем приложении для Android я слушаю пару системных событий (которые не запускаются довольно часто), и после каждого события я публикую задачу, которая выполняется после небольшой задержки (обычно 1 минута) в фоновом режиме. (после выполнения задачи в ожидании некоторых условий ее можно снова опубликовать)
Мой подход состоял в том, чтобы создать экземпляр Singleton с HandlerThread и опубликовать мои задачи в этом потоке обработчиков.
(См. Фрагмент кода ниже). Я понимаю, что этот поток теперь существует в течение всего жизненного цикла моего приложения.
мой вопрос:
Есть ли снижение производительности для поддержания HandlerThread живым, даже если он не выполняет никакой работы?
public class Observer {
private HandlerThread workerThread;
private Handler mHandler;
private Observer() {
workerThread = new HandlerThread("observer-thread", Process.THREAD_PRIORITY_BACKGROUND);
workerThread.start();
mHandler = new Handler(workerThread.getLooper());
}
public static Observer getInstance() {
if (mInstance == null) {
synchronized (Observer.class) {
if (mInstance == null) {
mInstance = new Observer();
}
}
}
return mInstance;
}
public void post(...) {
...
}
}