Intereting Posts
Получить простой объект json с помощью модификации 2 Универсальный загрузчик изображений не может загружать изображения иногда Как рисовать круг через XML Drawable – Android? Android: Intent.ACTION_SEND с EXTRA_STREAM не прикрепляет изображения при выборе приложения Gmail на htc Hero Android: AutoCompleteTextView показывает предложения, когда текст не вводится Голосовая команда стекла в ближайшем матче из данного списка В базе данных существует запись Android ()? Обфускация в проектах Xamarin Как обновить галерею после того, как я вставил изображение в Android? Перейдите к другому EditText, когда Soft Keyboard Next нажата на Android Использование? SelectableItemBackground с белым цветом фона Что установить CursorAdapter (контекст контекста, курсор c, int flags), чтобы он работал с CursorLoader? Как читать атрибут пользовательского измерения из java-кода Разрешения Marshmallow, не работающие для TargetVersion ниже 23 Объединить layout_weight и maxWidth для просмотров

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); 

Solutions Collecting From Web of "Android: Почему обработчики отправляют runnable?"

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

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

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