2016-08-07 5 views
9

Я знаю, потоки имеют очередь сообщений и обработчики нажмите runnables или сообщения, что, но когда я профиль моего андроида приложения с помощью андроид инструментов студии есть следующий процесс:android - что такое очередность очереди сообщений один раз в android?

android.os.MessageQueue.nativePollOnce

, который использует CPU больше, чем другие. Что это такое и как я могу сократить время, затрачиваемое на это? вот результат изображение профилировщика инструмента

enter image description here

+1

Похож на оживленный ожидание. Ответ заключается не в том, чтобы использовать опрос. Вы не опубликовали какой-либо код или другую информацию о своем приложении. – chrylis

+0

Что вы подразумеваете под занятым-ожидают? –

ответ

12

Короткий ответ:

Метод nativePollOnce используется для «ждать» до следующего Message становится доступным. Если время, проведенное во время этого звонка, длинное, ваш основной (UI) поток не имеет реальной работы и ждет, когда последующие события будут обработаны. Не нужно беспокоиться об этом.

Объяснение:

Поскольку «основной» поток отвечает за разработку пользовательского интерфейса и обработки различных событий, это Runnable имеет цикл, который обрабатывает все эти события. Петля управляется Looper, и ее работа довольно проста: она обрабатывает все сообщения в MessageQueue.

А Message добавлен в очередь, например, в ответ на входные события, в качестве обратного вызова рендеринга кадра или даже ваши собственные вызовы Handler.post. Иногда основной поток не имеет работы (т. Е. Нет сообщений в очереди), что может произойти, например. сразу после завершения рендеринга одного кадра (поток только что нарисовал один кадр и готов к следующему, просто ждет подходящее время). Поскольку сообщения добавляются в очередь непредсказуемым образом, метод MessageQueue.next (в котором вызывается nativePollOnce) активно проверяет новые сообщения, в которых используются циклы ЦП.

Вывод:

Вы не должны беспокоиться о nativePollOnce. Он просто указывает, что обработка всех сообщений завершена, и поток ждет следующего. Ну, это просто означает, что вы не уделяете слишком много внимания своей основной теме;)