Указание размера буфера для XmlPullParser - PullRequest
1 голос
/ 24 декабря 2010

Я использую XmlPullParser для постепенной загрузки некоторых данных через http на мобильные устройства.

Поскольку скорость таких соединений часто может составлять всего 1 КБ / с или меньше, я хотел бы снизить значение по умолчаниюРазмер буфера 8096 байт для PullParser.

У кого-нибудь есть идеи, как это возможно?(Кроме того, почему PullParser даже имеет свой собственный буфер?)

1 Ответ

2 голосов
/ 24 декабря 2010

Насколько я могу судить, вам нужно установить размер буфера объекта Reader или объекта InputStream, передаваемого в XmlPullParser.setInput().

Метод setInput () может принимать любой тип источника, но какоба являются абстрактными, фактический тип Reader или InputStream, который вы используете, может варьироваться - некоторые могут иметь буферы, и в этом случае вам нужно просмотреть документы, чтобы проверить, в зависимости от того, что вы используете.

Что касается класса, который реализует XmlPullParser с буфером - мне кажется, что это будет неизбежно, так как потребуется какое-то «рабочее пространство», но размербуфер и то, как это отражается на объеме данных, запрашиваемых каждый раз из Reader или InputStream, сводится к определению класса.

В заключение я бы сказал, что единственный способ, которым вы сможете контролировать количестводанных, запрашиваемых каждый раз, это определить свой собственный класс, который реализует XmlPullParser.Самый простой способ - расширить класс с открытым исходным кодом (например, Apache) и просто переопределить методы, которые читают из источников Reader или InputStream (используя меньший буфер).

...