Я использую XmlPullParser для загрузки некоторых данных постепенно по http на мобильных устройствах.
Так как скорость таких подключений часто может быть такой же низкой, как 1 КБ/с или меньше, я бы хотел уменьшить размер буфера по умолчанию 8096 байт для PullParser.
У кого-нибудь есть идея, как это возможно? (Кроме того, почему PullParser даже имеет свой собственный буфер?)
Насколько я могу судить, вам нужно установить размер буфера объекта Reader или объекта InputStream, переданного на XmlPullParser.setInput()
.
Метод setInput() может принимать любой тип источника, но поскольку оба являются абстрактными, фактический тип Reader или InputStream, который вы используете, может различаться - у некоторых могут быть буферы, и в этом случае вам нужно посмотреть документы, чтобы проверить их в зависимости от что вы используете.
EDIT:
Что касается класса, который реализует XmlPullParser с буфером, - мне кажется, что это будет неизбежно, поскольку необходимо будет какое-то "рабочее пространство", но размер буфера и то, как это отражается на количество данных, запрашиваемых от Reader или InputStream каждый раз, будет уменьшаться до определения класса.
В заключение я бы сказал, что единственный способ контролировать количество запрошенных данных - определить свой собственный класс, который реализует XmlPullParser. Самый простой способ - расширить класс с открытым исходным кодом (например, apache one) и просто переопределить методы, которые читаются из источников Reader или InputStream (с использованием меньшего буфера).