Запрашивая интенсивную услугу для получения информации о его очереди
-
27-10-2019 - |
Вопрос
У меня есть натуральный сервис, который очередите вызовы веб -службы, которые необходимо сделать на моем веб -сервере. Таким образом, каждое намерение - это вызов веб -службы.
Я хотел бы настроить что -то, где мое приложение может спросить это намерение обслуживания, есть ли у него какие -либо намерения, содержащие определенную часть данных (т.е.: «Вы уже ждете, чтобы спросить облако для данных x? Или мне нужно сказать вам сделай это?").
Есть ли какие -либо предложения о том, как я мог бы продлить сжигание, чтобы сделать это? Можно ли пройти очередь на намерения намерения? Или мне понадобится взять код intentservice и изменить его?
Единственная другая идея, которую я имею, - добавить таблицу в базу данных и журнал, который вызовы находятся в очереди, причем каждый журнал удаляется из таблицы при завершении.
Решение
Есть ли какие -либо предложения о том, как я мог бы продлить сжигание, чтобы сделать это? Можно ли пройти очередь на намерения намерения? Или мне понадобится взять код intentservice и изменить его?
Вероятно, последнее, если вы действительно хотите изучить фактическую очередь. IntentService
поворачивает Intents
в сообщения, выпавшие в очередь Looper
через HandlerThread
. Анкет Ничто из этого не обнаружено через SDK, хотя. К счастью, IntentService
довольно короткий - даже 150 строк. Вы можете клонировать его в свой собственный пакет и внести изменения по мере необходимости. Просто запустите DIFF на источнике, когда в репозитории AOSP выпускаются новые обновления источника, поэтому вы знаете, выполнил ли Google какую -либо серьезную операцию на IntentService
Сама, что вы можете воспользоваться.
Единственная другая идея, которую я имею, - добавить таблицу в базу данных и журнал, который вызовы находятся в очереди, причем каждый журнал удаляется из таблицы при завершении.
Это даже не должно было быть таким настойчивым, так как IntentService
Собственная очередь не устойчива. Просто сохраните свою собственную очередь FIFO в onStartCommand()
, прикованные к суперклассу и выскакивая Intent
вне очереди в конце onHandleIntent()
. Анкет У этого есть шанс выйти из синхронизации с главной очередью (например, вы захотите использовать finally
Чтобы вы отказались от работы с собственной очереди), но вам не придется клонировать класс.
Другие советы
Другим решением может быть решение, переопределив OnStartCommand.
Здесь это гладкое решение, в котором я нашел вдохновение для аналогичной проблемы :)