Что такое обратный вызов связующего на Android? - PullRequest
28 голосов
/ 31 августа 2010

Я наблюдал за презентацией Google I / O Вергилия Добьянски о том, как правильно реализовать REST на Android с помощью сервисов и поставщиков контента. http://code.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html

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

У меня большинство из них прибито, но одна вещь, которая меня побеждает, это обратный вызов Binder, на который Virgil ссылается на слайдах (см. Ссылку выше), на стр. 43 он показывает шаг 2 как запуск службы с startService (намерение) и step 10 как возвращение информации о состоянии с использованием обратного вызова Binder. В презентации нет ни одного примера кода, который довольно разочаровывает. Поговаривают об открытом источнике для клиента Twitter, который, очевидно, использует этот подход, но пока ничего не сделал, и объявление было в апреле.

В видео он заявляет: «Что такое обратный вызов связывателя? Обратный вызов связывателя, воспринимайте его как интерфейс, который был передан в намерении запроса».

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

Я подумал, что он может иметь в виду привязку к сервису и реализацию обратного вызова таким образом. Однако он конкретно ссылается на локальный сервис и использует strarSerice (), а не bindService (). Также с помощью bindService () служба будет уничтожена, если действие будет уничтожено, что противоречит идее. Обходной путь должен использовать startService () и затем bindService () и оставить службу работающей на время. Другая проблема, связанная с bindService (), заключается в том, что обратный вызов не может быть использован до тех пор, пока onServiceConnected () не завершит работу, что еще больше усложнит код, поскольку инструкции действия не могут быть переданы в намерении, поскольку обратный обратный вызов может отсутствовать во время возврата результаты.

Меня интересует только реализация этого с использованием рекомендованного подхода. Может кто-нибудь пролить свет на то, что такое обратный вызов Binder и как его кодировать. Также связанный с этим, кто-нибудь знает, как выглядел бы Service Helper, кроме бинта синглтона?

Любая помощь здесь будет высоко ценится. Спасибо Clive

1 Ответ

14 голосов
/ 31 августа 2010

Возможно, он имел в виду ResultReceiver или, возможно, createPendingResult().Вот пара из примеров проектов , демонстрирующих использование последних.

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