запуск службы и возврат данных - PullRequest
1 голос
/ 04 февраля 2012

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

Ответы [ 2 ]

1 голос
/ 04 февраля 2012

Здесь вы имеете дело с довольно серьезными проблемами синхронизации потоков. Вам гораздо лучше будет зарегистрировать какую-нибудь парадигму слушателя, чтобы вы регистрировали свою активность в качестве слушателя данных, которые генерирует ваша служба. В настоящий момент синхронизация между вашим Сервисом и Активностью отсутствует, в результате чего Активность пытается получить результаты из Сервиса до того, как они будут готовы. Существует масса ресурсов для обсуждения шаблона слушателя или шаблона Observer.

Должен заметить, я понятия не имею, действительно ли ваша Служба корректно рушит вещи. Я просто смотрю на ваше общение между ними.

0 голосов
/ 22 апреля 2012

При возврате результатов из сервиса лучше внедрить интерфейс ResultReceiver в вашу деятельность и передать объект-получатель в сервис через putExtra.В вашем сервисе извлеките объект получателя и вызовите функцию receiver.send () , чтобы отправить что-либо в Bundle.[Я тестировал этот шаблон как минимум в IntentService ].

Редактировать: проверить этот пост для полной реализации.

...