Во время самого последнего Google IO, была презентация о реализации спокойных клиентских приложений. К сожалению, это было только обсуждение на высоком уровне без исходного кода реализации.
На этой диаграмме на пути возврата есть различные обратные вызовы для других методов.
Как мне объявить, что это за методы?
Я понимаю идею обратного вызова - кусок кода, который вызывается после определенного события, но я не знаю, как его реализовать. Единственный способ, которым я реализовал обратные вызовы, - это переопределение различных методов (например, onActivityResult).
Я чувствую, что у меня есть базовое понимание шаблона проектирования, но я продолжаю понимать, как обращаться с обратным путем.
Ответы:
Во многих случаях у вас есть интерфейс и вы передаете объект, который его реализует. Например, диалоги имеют OnClickListener.
Так же, как случайный пример:
Я, вероятно, испортил синтаксис в варианте 2. Это рано.
источник
Когда что-то происходит, на мой взгляд, я запускаю событие, которое слушает моя деятельность:
// ОБЪЯВЛЕНО (ПОЛЬЗОВАТЕЛЬСКИЙ) ВИД
// ЗАЯВЛЕНО В ДЕЯТЕЛЬНОСТИ
Если вы хотите узнать больше о связи (обратные вызовы) между фрагментами, смотрите здесь: http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity
источник
Нет необходимости , чтобы определить новый интерфейс , когда вы можете использовать существующий:
android.os.Handler.Callback
. Передайте объект типа Callback и вызовите функции обратного вызоваhandleMessage(Message msg)
.источник
Пример реализации метода обратного вызова с использованием интерфейса.
Определите интерфейс, NewInterface.java .
пакет javaapplication1;
Создайте новый класс, NewClass.java . Он вызовет метод обратного вызова в основном классе.
Основной класс JavaApplication1.java для реализации интерфейса NewInterface - метод callback (). Это создаст и вызовет объект NewClass. Затем объект NewClass будет вызывать свой метод callback () по очереди.
источник
чтобы немного разъяснить ответ дракона (так как мне потребовалось некоторое время, чтобы выяснить, что делать с
Handler.Callback
):Handler
может использоваться для выполнения обратных вызовов в текущем или другом потоке, передавая егоMessage
s.Message
имеет данные , которые будут использоваться с обратного вызова. aHandler.Callback
может быть передан в конструкторHandler
, чтобы избежать непосредственного расширения Handler. таким образом, чтобы выполнить некоторый код через обратный вызов из текущего потока:РЕДАКТИРОВАТЬ: только что понял, что есть лучший способ получить тот же результат (минус контроль точно, когда выполнять обратный вызов):
источник
Callback
версия, потому что вы не обязательно имеете доступ к данным, которые необходимы вамRunnable.run()
в момент ее созданияВы также можете использовать
LocalBroadcast
для этой цели. Вот быстрый тестСоздать широковещательный приемник:
Вот как вы можете вызвать это
отменить регистрацию получателя в onPause:
источник