MessageQueue
не имеет публичных методов для работы с сообщениями. Работа с очередью выполняется через методы класса Handler
.MessageQueue
хранит объекты класса Message. В объекте message можно передать Bundle
, который добавляется и получается методами setData()
и getData()
.Помимо data-bundle в message есть два публичных поля типа
int
: arg1
и arg2
, а также публичное поле obj
типа Object
. Эти поля используются в тех случаях, когда нужно передать целочисленное значение или произвольный объект, и нет необходимости создавать bundle.Также класс
Message
имеет публичное целочисленное поле what
, которое по смыслу подобно параметру requestCode
в методе startActivityForResult()
и используется для определения о чем это сообщение.Класс
Message
имеет публичный конструктор, но вместо него рекомендуется использовать статические методы Message.obtain()
или Handler.obtainMessage()
. Методы obtain
возвращают message из пула объектов. После обработки сообщения нужно вызвать метод Message.recycler()
, для освобождения связанных ресурсов и возвращения объекта message в пул.Помимо объектов с данными в message можно задать callback типа
Runnable
, который будет вызван хэндлером после обработки сообщения. Для этого сообщение создается методом Message.obtain(handler: Handler, callback: Runnable)
.