Android: как получить результат от сервиса в стартовой деятельности - PullRequest
1 голос
/ 03 марта 2012

Вот моя проблема:

У меня есть активность, когда пользователь вводит данные "проблемы"
- Это действие запускает службу (по намерению) с данными о проблеме
- Сервис расчета решения задачи
- И я хочу отправить это решение на занятие, чтобы оно могло печататься, если на экране.

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

Спасибо!

1 Ответ

3 голосов
/ 03 марта 2012

Что произойдет, если пользователь нажмет BACK или HOME после ввода «данных о проблеме», до того, как «решение» будет готово?

Если ответ таков, что вам не нужно делатьчто угодно, затем избавьтесь от Service и попросите Activity выполнить работу по вычислению решения (возможно, с использованием AsyncTask).Вы ничего не получите в этом случае, используя Service.

Если, однако, пользователь все еще захочет «решение», тогда использование Service хорошо, но вы должны принятьучтите, что Activity, запустивший службу, может больше не существовать или не находиться на переднем плане.

Один из способов справиться с этим - использовать упорядоченную рассылку.Попросите Activity зарегистрировать BroadcastReceiver с высоким приоритетом для трансляции, когда она находится на переднем плане (через onResume() и onPause()), и зарегистрировать BroadcastReceiver с низким приоритетом для той же трансляции через манифест.Service будет sendOrderedBroadcast(), когда его работа будет завершена.Activity -registered BroadcastReceiver обновит свой пользовательский интерфейс с результатом и прервет трансляцию.Зарегистрированный в манифесте BroadcastReceiver вызовет Notification, чтобы сообщить пользователю о выполненной работе. Вот блог с более подробной информацией об этом шаблоне, а - пример проекта , демонстрирующий его использование.

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