2016-03-21 32 views
0

我正在使用BitmapFactory从文件中获取位图。 decodeStream中的第一个参数是一个流。我提供了一个新的FileInputStream。我需要明确关闭流吗?这可能导致内存泄漏?显式关闭FileInputStream

Bitmap bm = BitmapFactory.decodeStream(new FileInputStream(x)) 

也许这应该是?:

FileInputStream fis = new FileInputStream(x); 
Bitmap bm = BitmapFactory.decodeStream(fis); 
fis.close(); 

我知道位图必须是泄漏的倾向,这个问题更多的是FileInputStream中比位图。

回答

0

是的,你需要关闭流。由于解码函数不知道没有更多的数据要写入,所以它不会为你做。不这样做不可能导致大的内存泄漏,但是如果数据流被缓冲并且会释放操作系统资源(文件句柄至少)未释放,可能会导致数据不会被刷新到磁盘。