我正在使用 XmlPullParser 在移动设备上通过 http 逐渐加载一些数据。
由于此类连接的速度通常可以低至 1KB/s 或更低,因此我想降低 PullParser 的默认缓冲区大小 8096 字节。
有没有人有一个想法,这怎么可能?(另外,为什么 PullParser 甚至有自己的缓冲区?)
我正在使用 XmlPullParser 在移动设备上通过 http 逐渐加载一些数据。
由于此类连接的速度通常可以低至 1KB/s 或更低,因此我想降低 PullParser 的默认缓冲区大小 8096 字节。
有没有人有一个想法,这怎么可能?(另外,为什么 PullParser 甚至有自己的缓冲区?)
据我所知,您需要设置 Reader 对象或 InputStream 对象的缓冲区大小传递给XmlPullParser.setInput()
.
setInput() 方法可以接受任何一种类型的源,但由于两者都是抽象的,因此您使用的 Reader 或 InputStream 的实际类型可能会有所不同 - 有些可能有缓冲区,在这种情况下,您需要查看文档以检查您是什么使用。
编辑:
至于实现具有缓冲区的 XmlPullParser 的类 - 在我看来,这将是不可避免的,因为需要有某种“工作区”,但缓冲区的大小以及它如何反映每次从 Reader 或 InputStream 请求的数据将归结为类定义。
总之,我想说你能够控制每次请求的数据量的唯一方法是定义你自己的实现 XmlPullParser 的类。最简单的方法是扩展一个开源类(例如 apache 类)并简单地覆盖从 Reader 或 InputStream 源读取的方法(使用较小的缓冲区)。