Класс Executor более мощный и может использовать пул потоков, тогда как каждый обработчик ссылается на один поток. Исполнитель позволяет вам получить все запланированные задания и отменить их, если хотите. С другой стороны, Обработчик не будет отвечать на простые вопросы, такие как, сколько задач ожидает, или давать ссылку на все ожидающие задачи. Я полагаю, что одна из причин того, что обработчик более ограничен, заключается в том, что Android дает вам доступ к основному обработчику, который он использует для пользовательского интерфейса, и вы действительно можете испортить ОС, если вы начали отменять задачи ОС.
В общем, если вам нужен пул потоков или много энергии, используйте Executor. Если вам просто нужен красивый фоновый поток для запуска одной задачи за раз, используйте Handler. Например, когда я хочу запросить свою базу данных, я действительно хочу, чтобы за один раз выполнялся только один запрос, и я не хочу генерировать ANR, поэтому я использую обработчик, работающий в фоновом потоке, для выполнения моих запросов.
Я считаю, что ваш выбор исполнителя звучит уместно, поскольку вы хотите обрабатывать несколько входящих запросов одновременно, а обработчик может выполнять только один запрос за раз.
ОБНОВЛЕНИЕ: Как создать обработчик, работающий в фоновом потоке:
В вашем конструкторе или onCreate напишите следующее, очевидно, вы можете установить приоритет на то, что вам нравится:
public class MyClass {
private Handler mBgHandler;
public MyClass() {
HandlerThread bgThread = new HandlerThread("My-Background-Handler");
bgThread.start();
mBgHandler = new Handler(bgThread.getLooper());
}
}
ОБНОВЛЕНИЕ: не забывайте выходить () или выходить из вашего HandlerThread () или выходить из него (), когда вы закончите с ним, в противном случае он будет ждать вечно