Я разрабатываю приложение, используя библиотеку RoboSpice для вызова API REST. Все отлично работает с библиотекой, кроме одного. Я не использую кеширование, доступное в RoboSpice, и поэтому все запросы выполняются без кеша. Теперь, когда выполняется какой-либо запрос, и пользователь нажимает кнопку «домой», тогда вызывается onStop(), где вызывается whereStop() диспетчера специй, который отбрасывает все прослушиватели запросов для уведомления. Когда приложение снова выходит на передний план, тогда обновление пользовательского интерфейса не происходит, поскольку слушатели не были уведомлены.Запрос Robospice никогда не заканчивается, если приложение идет в фоновом режиме, а затем подходит к Foreground?
Я не хочу использовать кэш, который предлагает Robospice. Есть ли другой способ получения уведомлений об обновлении пользовательского интерфейса без использования кэша?
Я согласен с тем, что RS делает это по причине. Но представьте, что был сделан запрос, и отображается диалоговое окно прогресса, и пользователь нажимает кнопку «домой». Вызов REST будет проходить должным образом, и когда пользователь запустит приложение, диалог прогресса не исчезнет, потому что пользовательский интерфейс не обновляется, поскольку слушатели были незарегистрированы. В любом случае, похоже, что использование кеша - единственный способ с RS в настоящее время. – mobiledev
Другим способом может быть вызов spiceManager.shouldStop() в onDestroy и запуск spicemanager в onCreate(). Поскольку onDestroy() является последним призывом к действию, если он будет убит. – mobiledev
@mobiledev, я не думаю, что второе решение лучше. Обязательное связывание действительно сложно, и предпочтительным местом является использование пары onStart/onStop. Возможно, вы заинтересованы в выполнении запроса от службы вместо активности. – Snicolas