Запрашивая интенсивную услугу для получения информации о его очереди

StackOverflow https://stackoverflow.com/questions/5357013

Вопрос

У меня есть натуральный сервис, который очередите вызовы веб -службы, которые необходимо сделать на моем веб -сервере. Таким образом, каждое намерение - это вызов веб -службы.

Я хотел бы настроить что -то, где мое приложение может спросить это намерение обслуживания, есть ли у него какие -либо намерения, содержащие определенную часть данных (т.е.: «Вы уже ждете, чтобы спросить облако для данных x? Или мне нужно сказать вам сделай это?").

Есть ли какие -либо предложения о том, как я мог бы продлить сжигание, чтобы сделать это? Можно ли пройти очередь на намерения намерения? Или мне понадобится взять код intentservice и изменить его?

Единственная другая идея, которую я имею, - добавить таблицу в базу данных и журнал, который вызовы находятся в очереди, причем каждый журнал удаляется из таблицы при завершении.

Это было полезно?

Решение

Есть ли какие -либо предложения о том, как я мог бы продлить сжигание, чтобы сделать это? Можно ли пройти очередь на намерения намерения? Или мне понадобится взять код intentservice и изменить его?

Вероятно, последнее, если вы действительно хотите изучить фактическую очередь. IntentService поворачивает Intents в сообщения, выпавшие в очередь Looper через HandlerThread. Анкет Ничто из этого не обнаружено через SDK, хотя. К счастью, IntentService довольно короткий - даже 150 строк. Вы можете клонировать его в свой собственный пакет и внести изменения по мере необходимости. Просто запустите DIFF на источнике, когда в репозитории AOSP выпускаются новые обновления источника, поэтому вы знаете, выполнил ли Google какую -либо серьезную операцию на IntentService Сама, что вы можете воспользоваться.

Единственная другая идея, которую я имею, - добавить таблицу в базу данных и журнал, который вызовы находятся в очереди, причем каждый журнал удаляется из таблицы при завершении.

Это даже не должно было быть таким настойчивым, так как IntentServiceСобственная очередь не устойчива. Просто сохраните свою собственную очередь FIFO в onStartCommand(), прикованные к суперклассу и выскакивая Intent вне очереди в конце onHandleIntent(). Анкет У этого есть шанс выйти из синхронизации с главной очередью (например, вы захотите использовать finally Чтобы вы отказались от работы с собственной очереди), но вам не придется клонировать класс.

Другие советы

Другим решением может быть решение, переопределив OnStartCommand.

Здесь это гладкое решение, в котором я нашел вдохновение для аналогичной проблемы :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top