每次我完成一个包含带有ArrayAdapter的GridView的应用程序,其中我从getView()返回一个ImageView时,我收到一条错误消息:
01-15 17:28:55.715:E / StrictMode(6480):在附加的堆栈跟踪中获取资源但从未释放。有关避免资源泄漏的信息,请参阅java.io.Closeable。 E / StrictMode(6480): java.lang.Throwable:显式终止方法'close'未调用
问题似乎指向以下几行:
imageView.setImageURI(uri)
有什么想法吗?
答案 0 :(得分:4)
在某些情况下,setImageURI()会打开一个InputStream,但不会关闭它。这是一个解决方法:
InputStream is = null;
try {
if(uri != null) {
is = getContentResolver().openInputStream(uri);
Drawable d = Drawable.createFromStream(is, null);
imageView.setImageDrawable(d);
}
} catch(Exception e) {
Log.e(TAG, "Unable to set ImageView from URI: " + e.toString());
} finally {
org.apache.commons.io.IOUtils.closeQuietly(is);
}