Есть ли какие-либо предложения о том, как я могу расширить IntentService для этого?Можно ли пройти очередь IntentService IntentService?Или мне нужно взять код IntentService и изменить его?
Вероятно, последний, если вы действительно хотите изучить реальную очередь.IntentService
превращает Intents
в сообщения, выдаваемые в очередь сообщений Looper
через HandlerThread
.Ничего из этого не раскрывается через SDK, хотя.К счастью, IntentService
довольно короткий - даже не 150 строк.Вы можете клонировать его в свой собственный пакет и вносить изменения по мере необходимости.Просто запустите diff для источника, когда новые обновления источника будут выпущены в репозитории AOSP, чтобы вы знали, выполнила ли Google какую-либо серьезную операцию над IntentService
, над которой вы, возможно, захотите воспользоваться.
Единственная другая идея, которую я имею, состоит в том, чтобы добавить таблицу в базу данных и записать, какие вызовы находятся в очереди, при этом каждый журнал будет удален из таблицы после завершения.
Это даже не потребуетбыть постоянным, так как собственная очередь IntentService
не является постоянной.Просто сохраните свою собственную очередь FIFO в onStartCommand()
, связав ее с суперклассом, и вытолкнув вашу Intent
из очереди в конце onHandleIntent()
.Это может привести к потере синхронизации с главной очередью (например, вы захотите использовать finally
, чтобы убедиться, что вы удалили работу из собственной очереди), но вам не придется клонировать класс.