Имеет ли смысл называть связанное с меню событие «функцией обратного вызова»? - PullRequest
2 голосов
/ 06 августа 2011

Я прохожу учебники по Android Notepad: http://developer.android.com/resources/tutorials/notepad/notepad-ex2.html

В Notepadv2, шаг 5, написано:

onListItemClick () - это метод обратного вызова, который мы переопределим.

Я немного новичок в концепции обратных вызовов, но из исследования я понимаю, что обратный вызов - это код, который вы предоставляете в одном процессе, который выполняется, когда другой процесс достигает определенного результата. Что делает это конкретное событие обратным вызовом, а не другие события?

Является ли это обратным вызовом, потому что он вызывается только тогда, когда пользователь что-то делает (в этом случае, нажмите на элемент списка)? Но если это так, то не может ли событие считаться обратным вызовом, поскольку оно вызывается только тогда, когда происходит что-то вне его? Или я что-то упустил?

Ответы [ 2 ]

1 голос
/ 22 октября 2011

Ответ CommonsWare гораздо более полный, но я думаю, что могу немного упростить объяснение.

A callback - это то, что вызывается обратно . Концептуально вы заявляете, что вас интересует определенное событие (например, нажатие кнопки, когда определенное задание завершается, количество времени прошло и т. Д.), И указываете свой код на перезвонить , когда это происходит.

Это все равно, что взять трубку и сказать кому-нибудь "перезвони мне, когда будешь готов". Обратный вызов будет принимать не телефонный, а функциональный вызов.

Вы вызываете функцию и передаете ей обратный вызов , и эта функция вызывает ваш обратный вызов при подходе.

1 голос
/ 06 августа 2011

Насколько я понимаю, обратный вызов - это код, который вы предоставляете в одном процессе и который выполняется, когда другой процесс достигает определенного результата

Не совсем.

Википедия описывает обратный вызов как «ссылку на исполняемый код или фрагмент исполняемого кода, который передается в качестве аргумента другому коду». Это, вероятно, лучшее использование этого термина. В этом случае, поскольку операции Java выполняются в форме методов, «метод обратного вызова» - это метод, который будет вызываться в результате обратного вызова.

Является ли это обратным вызовом, потому что он вызывается только тогда, когда пользователь что-то делает (в этом случае щелкните элемент списка)?

Не совсем.

Это метод обратного вызова, поскольку другие компоненты платформы Android обнаруживают событие (в данном случае пользователь нажимает на элемент в списке) и вызывают метод обратного вызова onListItemClick(), чтобы предоставить вам контроль.

Но если это так, не может ли событие считаться обратным вызовом в том смысле, что оно вызывается только тогда, когда происходит что-то вне его?

Обычно «обратный вызов» зарезервирован для случаев, когда существует четко определенная непрозрачная граница между модулем, обнаруживающим событие, и модулем, реализующим обратный вызов для обработки события. В этом случае вы не писали операционную систему Android, и поэтому onListItemClick() является обратным вызовом в ваш собственный код, который ОС будет вызывать, чтобы позволить вам обрабатывать щелчки элементов списка.

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