2016-03-21 12 views
0

Ich verwende eine BitmapFactory, um eine Bitmap aus einer Datei zu erhalten. Das erste Argument in decodeStream ist ein Stream. Ich stelle es mit einem neuen FileInputStream bereit. Muss ich den Stream stattdessen explizit schließen? Könnte dies zu einem Speicherleck führen?Explizit schließen FileInputStream

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

Vielleicht sollte es sein ?:

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

Ich weiß Bitmaps eine Tendenz haben, undicht zu sein, diese Frage ist, mehr über die Fileinputstream als die Bitmap.

Antwort

0

Ja, Sie müssen den Stream schließen. Da die Dekodierungsfunktion nicht weiß, dass nicht mehr Daten zu schreiben sind, wird es für Sie nicht ausgeführt. Wenn Sie dies nicht tun, ist das wahrscheinlich kein großer Speicherleck, aber es kann dazu führen, dass Daten nicht auf die Festplatte geschrieben werden, wenn der Stream gepuffert ist und OS-Ressourcen (Datei-Handles auf Minimum) unveröffentlicht bleiben.

Verwandte Themen