Android: рендеринг OpenGL приостанавливается при выполнении тяжелой фоновой задачи

Я визуализирую объекты через OpenGL и в большинстве ситуаций получаю плавную частоту кадров 60 кадров в секунду. ПОКА я не делаю что-то тяжелое в фоновом потоке, например извлекаю данные из REST API, обрабатываю их и добавляю объекты в граф (вещи с низким приоритетом, меня больше волнует плавность пользовательского интерфейса). Затем визуализатор приостанавливается на очень длительный период, до 1 секунды (примерно, пока работает фоновый поток), а затем возобновляет работу, как будто ничего не произошло. Я заметил это, потому что одновременно запускается анимация, и она зависает на этот период. Фоновому потоку устанавливается минимальный приоритет, а сборка мусора занимает до 100-200 мс, но не всю секунду. Когда я устанавливаю точку отладки где-нибудь в фоновой задаче, рендеринг продолжается нормально, без каких-либо задержек.

Возможно ли, что мой тяжелый фоновый поток истощает поток OpenGL? Если да, то что я могу сделать?

7
задан Nicol Bolas 27 June 2012 в 14:58
поделиться