Firebase的所有图像都没有存储

时间:2020-02-21 15:13:22

标签: android firebase firebase-storage

我正在尝试将图像从Glide存储到Firebase存储,但是仅存储了最后一个图像。

    for (i = 0; i < imageFileList.size(); i++) {
        StorageRef = mySTORAGE.getReferenceIMAGE_PATH + dataHolder.getTitle() + "/" + i + ".png");
        Glide.with(this).asBitmap().load(imageFileList.get(i).getAbsolutePath()).into(new CustomTarget<Bitmap>() {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                stream = new ByteArrayOutputStream();
                resource.compress(Bitmap.CompressFormat.JPEG, 20, stream);
                byte[] byteArray = stream.toByteArray();
                StorageRef.putBytes(byteArray);
            }
            @Override
            public void onLoadCleared(@Nullable Drawable placeholder) {
            }
        });
    }

1 个答案:

答案 0 :(得分:1)

在这里我只能假设StorageRef是班级成员,因为您没有显示它被假冒的位置。在这种情况下,您的循环将在每次交互时覆盖StorageRef,并且在循环结束后仅保留最后一个值。由于Glide是异步的,因此所有回调将在循环完成之后发生,并且它们都将使用StorageRef的最后一个值。

您应该做的是使StorageRef成为最终的局部变量,以免每次循环都不会覆盖它:

final StorageReference StorageRef =
    mySTORAGE.getReferenceIMAGE_PATH + dataHolder.getTitle() + "/" + i + ".png");