ImageView setImageURI导致onMause出现strictmode错误

时间:2013-01-15 17:30:56

标签: android imageview android-strictmode

每次我完成一个包含带有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)

有什么想法吗?

1 个答案:

答案 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);
}