Android темы зависают и возвращаются через несколько минут - PullRequest
0 голосов
/ 18 октября 2018

Мой проект Android использует потоки ExecutorServices и Looper.На Oreo, и даже на Marshmallow, я начал испытывать следующую проблему:

К сожалению, так как я обновился до SDK 27, при возврате из doze потоки не возобновятся до нескольких минут спустя.

t1: Receiving event
    FG Service Starts, and creates a job for thread T.
    FG Service onStartCommand exits - thread T still running

t2 - may be milliseconds later: Doze. T is frozen (not blocked, just not executing).

t3: Maintenance Window: Some AlarmManager event or Push
    starts and finishes. T is still frozen.

t4 - minutes later: Another maintenance window. T wakes up where it stopped on t2.

На фазе t2 это не обязательно был блокирующий триггер, который переводил T в спящий режим.Это может быть вызов для сообщения HTTP, и это может быть handle.post{} (который просто помещает Runnable в очередь).

Итак, мои вопросы:

  1. Каковы ограничения, особенно для потоков, во время окон обслуживания?
  2. Будильник AlarmManager, предназначенный для обслуживания переднего плана, должен запустить окно обслуживания.Это «ограниченное окно обслуживания»?
  3. Разве я не получу несколько секунд отсрочки в окне обслуживания?(t3)
  4. Если Doze активируется после выхода onStartCommand - каков наилучший способ вызова заданий вне основного потока, чтобы у меня было несколько секунд для обработки событий и представления отчетасервер перед заморозкой? Задержка основного потока - не вариант , а Firebase очень неточен.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...