Android: Почему обработчики отправляют runnable? - программирование
Подтвердить что ты не робот

Android: Почему обработчики отправляют runnable?

Может кто-нибудь объяснить, почему Handlers отправляют runnable? Выполняет ли переопределение handleMessage и отправку сообщения?

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

Обработчик с сообщением:

handler.post(new Runnable() {
    @Override
    public void run() {
        imageView.doSomething();
    }
 });

Обработчик с handleMessage:

final Handler handler = new Handler() {
     @Override
     public void handleMessage(Message message) {
         imageView.doSomething();
     }
 };

handler.sendMessage(message);
4b9b3361

Ответ 1

Оба фрагмента кода работают одинаково, обычно вы используете Handler.postRunnable, когда хотите выполнить некоторый код в потоке пользовательского интерфейса, не зная ничего о своем Обработчик. Во многих случаях имеет смысл использовать произвольный код в потоке пользовательского интерфейса.

Но в некоторых случаях вы хотите организовать то, что отправляется в поток пользовательского интерфейса, и выполнять определенные функции, которые вы хотите выполнить, используя sendMessage.

Я не думаю, что есть ограничение производительности за использование одного над другим. Это зависит от вас, чтобы использовать то, что, по вашему мнению, подходит вам больше.