Как изменить прогресс выполнения активности из потока, вызываемого службой? - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть действие, у которого есть индикатор выполнения, и такое же действие порождает службу, а служба порождает поток, который обрабатывает данные и никогда не заканчивается, но у него есть циклы, я хотел бы отразить прогресс в этих циклах (конец работы в каждой итерации цикла while (true) = 100%, затем обновите и то же самое). Что я должен использовать?

1 Ответ

1 голос
/ 26 декабря 2011

У вас есть два варианта:

Один

Сделайте ваш сервис приоритетным, а затем вы сможете отобразить индикатор выполнения в области уведомлений.Для отображения индикатора выполнения вам может потребоваться поиск RemoteViews.Это будет похоже на Android Market, который отображает ход загрузки в панели уведомлений.

Подробнее:

Запуск службы в Foreground Как изменить макет уведомления

Второй

Это будет более захватывающим.Вы должны связаться с сервисом.Документы здесь помогут.Теперь они могут говорить, что Bound Services не должны жить долго, но это не обязательно.

В этом случае вы можете использовать AsyncTask (если вы не используете, вместо потока) вваш сервис.В методе onProgressUpdate из AsyncTask вы опубликуете прогресс в Сервисе, а затем Сервис опубликует его в Актуальном действии, используя IPC.Ниже приведены ссылки:

AsyncTask Ограниченная служба

И вам может понадобиться AIDL для IPC

...