Android BitmapFactory 与 BufferedInputStream

Android BitmapFactory vs. BufferedInputStream

BitmapFactory.decodeStream(InputStream) 是否已经读取了大量的数据块,或者是否应该确保将 BufferedInputStream 而不是原始的 InputStream 传递给它?

我问好像 BitmapFactory 还没有在相当大的块中执行 IO,那么应该在传递输入流之前清楚地对其应用缓冲。但是,如果它已经在大块中工作,那么应用缓冲实际上只是添加一组不必要的 memcpy() 操作。

如果那些编写采用 InputStreamOutputStream 参数的 API 的人在 Javadoc 中清楚地说明了这些事情,那就太好了。

目前,我正在应用缓冲,除非 InputStreamAssetManager.AssetInputStream 的一个实例,因为我注意到在 decodeStream().

下对这种情况的特殊处理

如果您查看实现,就会发现 decodeStream 可能会调用两种方法。

  • nativeDecodeAsset(),当我查看 class

  • 时,它似乎没有显示实现
  • decodeStreamInternal(),根据DECODE_BUFFER_SIZE

    的大小,一次读取16 * 1024字节

    (id post 代码,但格式现在似乎已损坏)

所以我认为使用 BitmapFactory.decodeStream() 是一个安全的选择