Android bitmap.recycle()不起作用

时间:2015-02-20 10:06:01

标签: android image bitmap stream recycle

我正在尝试从图库中加载图片,但toSave.recycle()不起作用。 我的意思是当调用toSave.recycle()时屏幕变为白色,应用程序不会崩溃,但图像不会显示。 你有什么建议吗?

这里是代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == LOAD_IMAGE_RESULT && resultCode == RESULT_OK && data != null) {
        Uri pickedImage = data.getData();
        String[] filePath = { MediaStore.Images.Media.DATA };
        Cursor cursor = getContentResolver().query(pickedImage, filePath, null, null, null);
        cursor.moveToFirst();

        String imagePath = cursor.getString(cursor.getColumnIndex(filePath[0]));
        Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
        postImage.setImageBitmap(bitmap);
        saveImage(bitmap);
        cursor.close();
    }
}

此处是转换位图图像并将其保存在Firebase中的方法。

public void saveImage(Bitmap toSave){
    if (toSave!=null) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        toSave.compress(Bitmap.CompressFormat.JPEG, 50, stream);
        toSave.recycle();
        byte[] byteArray = stream.toByteArray();
        String imageString = Base64.encodeToString(byteArray, Base64.DEFAULT);
        simplepostRef.child("image").setValue(imageString);
    }

非常感谢你!

1 个答案:

答案 0 :(得分:2)

bitmap.recycle()正在处理您的情况。您只需要回收位图,因为您在imageview中显示此位图。请查看docs