Обмен данными между службой и деятельностью - PullRequest
0 голосов
/ 03 октября 2011

Я должен публиковать прогресс из фоновой службы в пользовательском интерфейсе постоянно на индикаторе выполнения.Любые идеи о том, как это сделать.Намерения не будут работать, я думаю, потому что они могут отправлять данные только после начала действия.Ant другие предложения?

Обновление: прогресс в пользовательском интерфейсе происходит на индикаторе прогресса

Ответы [ 2 ]

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

Расширение приложения, которое создается один раз для всего приложения.

Когда запустится Activity, сохраните ее ссылку на поле в объекте Application. (Обратите внимание, что вы можете получить доступ к приложению с помощью Activity.getApplication). Установите в этом поле значение Activity или null в вызовах onPause / onResume.

Тогда в Сервисе у вас также есть доступ к вашему Приложению посредством Service.getApplication. Так что посмотрите, не является ли ваша ссылка на Activity ненулевым, что означает, что ваша активность показана пользователю, и обновите пользовательский интерфейс в случае необходимости, вызвав методы для вашей деятельности.

0 голосов
/ 05 октября 2011

Спасибо за помощь мышам, но, поскольку мне нужно было обновлять индикаторы выполнения для различных действий в моем приложении в зависимости от того, какая из них была видимой, я нашел, что это проще реализовать с помощью Broadcast Intents и Recievers и Intent Filters.Все, что мне нужно было сделать, - это передать информацию о прогрессе в моей службе, заключенную в пакет, через широковещательный Intent (с примененным настраиваемым фильтром Intent) и зарегистрировать (в onResume ()) внутренний подкласс BroadcastReciever в действиях, для которых требовался прогресс.(с тем же фильтром намерений).Можно также отменить регистрацию этих приемников в методе onPause () действия, чтобы сохранить свободное место в памяти.

...