Android BitmapFactory与BufferedInputStream

时间:2017-02-06 22:49:02

标签: android bitmapfactory bufferedinputstream

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

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

如果那些编写InputStreamOutputStream参数的API在Javadoc中对此类内容很清楚,那将是非常好的。

目前,我正在应用缓冲,除非InputStreamAssetManager.AssetInputStream的实例,因为我注意到decodeStream()下对该案例的特殊处理。

1 个答案:

答案 0 :(得分:0)

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

  • nativeDecodeAsset(),当我查看类时似乎没有显示实现

  • decodeStreamInternal(),它根据16 * 1024

    的大小一次读取DECODE_BUFFER_SIZE个字节

    (id发布代码,但格式似乎现在已经打破)

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