您的位置:首页 > 其它

资源未关闭造成的内存泄漏

2017-03-19 00:16 113 查看
对于使用了BraodcastReceiver,ContentObserver,File,Cursor,Stream,Bitmap等资源的使用,应该在Activity销毁时及时关闭或者注销,否则这些资源将不会被回收,造成内存泄漏。例如获取媒体库图片地址代码在查询结束的时候一定要调用

Cursor 的关闭方法防止造成内存泄漏。

String columns[] = new String[]{
MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID, MediaStore.Images.Media.TITLE, MediaStore.Images.Media.DISPLAY_NAME
};
Cursor cursor = this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, null);
if (cursor != null) {
int photoIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
//显示每张图片的地址,但是首先要判断一下,Cursor是否有值
while (cursor.moveToNext()) {
String photoPath = cursor.getString(photoIndex); //这里获取到的就是图片存储的位置信息
Log.e("LeakCanary", "photoPath---->" + photoPath);
}
cursor.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: