BitmapFactory.decodeStream(InputStream)
是否已经阅读了大量的内容,或者是否应该确保将BufferedInputStream
而不是原始InputStream
传递给它?
我问,好像BitmapFactory
已经没有在相当大的块中进行IO,那么应该在传递之前清楚地对输入流应用缓冲。但是,如果它已经在大块中工作,那么应用缓冲本质上只是添加了一组不必要的memcpy()
操作。
如果那些编写InputStream
或OutputStream
参数的API在Javadoc中对此类内容很清楚,那将是非常好的。
目前,我正在应用缓冲,除非InputStream
是AssetManager.AssetInputStream
的实例,因为我注意到decodeStream()
下对该案例的特殊处理。
答案 0 :(得分:0)
如果查看实现,decodeStream可能会调用两种方法。
nativeDecodeAsset(),当我查看类时似乎没有显示实现
decodeStreamInternal(),它根据16 * 1024
DECODE_BUFFER_SIZE
个字节
(id发布代码,但格式似乎现在已经打破)
所以我认为使用BitmapFactory.decodeStream()
是一个安全的选择