Android закончит тему в Сервисе и обновит интерфейс - PullRequest
4 голосов
/ 30 ноября 2011

У меня есть маленький вопрос о потоках и услугах.У меня есть пример, который загружает данные через Интернет в потоке, который работает в службе.Вещь, которую я хочу знать, это как я могу определить, когда мой поток завершен (все данные загружены), а затем вызвать сервис onDestroy(), который обновит пользовательский интерфейс во всех действиях, которые я должен сделать.1003 * Любые предложения, как это сделать, и это правильный путь, которым я должен это делать.

Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 30 ноября 2011
  1. Обнаружение завершенных загрузок: Если вы используете простой поток, а не AsyncTask , вам необходимо создать обратный вызов, вызываемый потоком для уведомления службы озавершенные загрузки (например, onDownloadsFinished()).
  2. Связь с действием: Существует много способов обмена данными между службами и действиями, но я считаю обязательным для службы Простейшие.При привязке к сервису Activity может регистрировать обратные вызовы непосредственно в сервисе.
  3. Изменить пользовательский интерфейс: Убедитесь, что вы используете runOnUiThread при попытке изменить пользовательский интерфейс из-за обратного вызова, поскольку он будет выполняться асинхронно.
  4. Остановка службы: Пока действие привязано к службе, оно будет работать.Это не проблема, потому что когда нет потока, выполняющего что-либо, он почти не потребляет никаких ресурсов.Вам нужно позвонить stopSelf() в пределах onDownloadsFinished(), если вы используете startService(), чтобы начать фоновую загрузку.Проверьте документацию по обслуживанию для получения дополнительной информации.
0 голосов
/ 30 ноября 2011

Во-первых, это зависит от того, какой веб-клиент вы используете для загрузки данных, этот клиент определяет конец входящих данных, после чего вам следует вызвать метод stopSelf() в вашем классе объектов Service, чем определять ваши действия в onDestroy() блок метода

0 голосов
/ 30 ноября 2011

1) использование может использовать мессенджер для связи между деятельностью и обслуживанием. 2) если ваши данные хранятся в каком-либо файле или базе данных, просто отправьте широковещательный приемник, который сообщит активности, что пора обновить 3) использовать интерфейс. но в этом случае вам придется хранить объект того интерфейса, который может использовать даже сервис.

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