Это пример избыточного использования обработчиков? - PullRequest
0 голосов
/ 02 сентября 2018

Есть ли смысл иметь несколько обработчиков, если они используют один и тот же лупер?

например:

private Handler firstHandler = new Handler(Looper.getMainLooper());
private Handler secondHandler = new Handler(Looper.getMainLooper());
firstHandler.post(...);
secondHandler.post(...);

... они оба публикуют в основной теме, разве бессмысленно иметь второй?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Да, оба обработчика указывают на один и тот же "MessageQueue". Дополнительную информацию можно получить по следующей ссылке:

Какова цель Looper и как его использовать?

0 голосов
/ 02 сентября 2018

Является ли это примером избыточного использования обработчиков?

Да.

Цитируется из Документов :

Обработчик позволяет отправлять и обрабатывать объекты Message и Runnable. связанный с MessageQueue потока. Каждый экземпляр обработчика связан с одним потоком и очередью сообщений этого потока. когда вы создаете новый обработчик, он привязан к потоку / очереди сообщений поток, который его создает - с этого момента он будет доставлять сообщения и runnables в эту очередь сообщений и выполнять их, как они выйти из очереди сообщений.

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

Более того, Handler связан с Thread, в котором он создан по умолчанию. Так что если Handler создается на main thread, вам не нужно указывать Looper.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...