У нас есть сетевое клиентское приложение, и мы пытаемся проверить наш подход к обработке ответов с сервера в сочетании с вращением устройства. по сути, мы делаем это,Отсутствует трансляция, когда устройство повернуто?
- активность регистрирует приемник для сетевых ответов
- активности инициирует работу сети, начиная пристальные службы
- службы отвечает вещательному намерение он закончил
наших (воспринимаемой) проблемой является то, что когда устройство вращается, активность уничтожается/воссоздается. в течение времени между тем, когда приемник активности не зарегистрирован в onPause()
, и когда он перерегистрирован в onResume()
, мы, возможно, пропустили намерение, которое транслируется службой.
Это настоящая проблема?
если да, то мы предположили следующее решение,
- первый, не использовать намерения для связи между деятельностью и обслуживанием
- создать две блокировки очереди: сетевые запросы и ответы в говорят, что класс приложения
- служба начинается поток, который
take()
«ы из очереди запросов - активность начинает поток, который
take()
» ы из очереди ответа - деятельности
offer()
«s в очередь запросов, когда он хочет, чтобы начать сетевую операцию - службы
offer()
» S в очередь ответов, когда пост является результат работы сети
любых советы ценятся, спасибо.
спасибо за ваш ответ. я не уверен, что связанные службы помогают, потому что вам все равно нужно отключить службу, когда действие остановлено, и в этом случае вы пропустили бы сообщения, возвращающиеся из службы. –
Идея связанных служб заключается в том, что другой компонент (активность) в вашем приложении может подключаться к нему в любое время и получать любую информацию. Ответственность за обслуживание и предоставление этой информации несет ответственность за любой компонент, который ее ограничивает. Это почти та же концепция, которую вы планируете реализовать, с той разницей, что для этой цели является встроенным механизмом andoid. Я отредактировал свой ответ, чтобы проиллюстрировать этот подход. – Christos
проблема заключается в том, что я хочу убедиться, что каждая пара запросов/ответов обрабатывается уровнем пользовательского интерфейса. с привязанным сервисом, все же возможно (я думаю), чтобы слой пользовательского интерфейса совершил звонок, затем остановился, отвязал и пропустил результат. при правильной компоновке очереди уровень пользовательского интерфейса берет только из очереди, когда он способен обрабатывать результат. –