2013-09-17 2 views
0

У меня есть класс, который расширяет сервис, и служба в основном извлекает данные из облака и списки ot в listview..am получают ошибку, когда я пытаюсь использовать метод findviewById для получить listview, потому что класс не расширяет Activity.does, кто-нибудь знает, как я должен это делать.Как найтиViewById в классе обслуживания в android

+0

Взгляните на мой ответ [здесь] (http://stackoverflow.com/questions/14660671/how-to-notify-an-activity-when- globalvariables-которые-изменены/14660808 # 14660808). Это не совсем тот же сценарий, но легко адаптируется. – Simon

ответ

1

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

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

  • LocalBroadcastManager из пакета Android поддержки или
  • реализации третьей стороны сообщения на автобус, как каре Otto или
  • Messenger привязанного к Handler
  • и т.д. .
0

Привет, На мой взгляд, лучше использовать AsncTask в том, что вам нужно написать бэкэнд, загружающий данные в метод doinBackground и s выведение данных в представление списка в onPostexcute.

Лучше взглянуть на AsyncTask

http://developer.android.com/reference/android/os/AsyncTask.html

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

для связывания службы

http://developer.android.com/guide/components/bound-services.html

Смежные вопросы