Обработчик как параметр метода

Почему некоторые API имеют обработчик в качестве параметра метода? Каковы возможные варианты использования? В частности, мне нужен кто-то, чтобы объяснить, почему нам нужен обработчик в методе диспетчеризации. Я пытаюсь выполнить операцию перетаскивания от имени пользователя, используя этот метод диспетчеризации.

boolean dispatchGesture (GestureDescription gesture, 
                AccessibilityService.GestureResultCallback callback, 
                Handler handler)

1 ответ

Решение

От dispatchGesture док,

callback AccessibilityService.GestureResultCallback: объект для обратного вызова, когда известен статус жеста. Если ноль, статус не сообщается.

handler Handler: обработчик для вызова объекта обратного вызова. Если ноль, объект вызывается обратно в главном потоке службы.

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

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

Другие вопросы по тегам