Указание размера буфера для XmlPullParser

1

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

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

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

Теги:
connection
buffer
xmlpullparser

1 ответ

2
Лучший ответ

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

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

EDIT:

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

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

  • 0
    Вы имеете в виду, что XmlPullParser каким-то образом настраивает свой размер буфера в соответствии с размером получаемого рейдера? Но нет никакого способа узнать, есть ли у прошедшего читателя буфер ...?
  • 0
    @Thomas Ahle: Смотрите мне правки - я все еще думаю, что ваш ответ может заключаться в контроле читателя / входного потока.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню