Текущая структура архитектуры моего хранилища Firebase выглядит следующим образом:
Photos_folder /
-> идентификатор пользователя 01 -> profile_picture_folder / -> image / jpeg (URI)
-> идентификатор пользователя 02
-> идентификатор пользователя 03
-> ect ...
В моем адаптере у меня есть метод onBindViewHolder
, в котором я передаю свой URI
и извлекаю образ URI через сеть хранения Firebase:
@Override
public void onBindViewHolder(@NonNull final CommentViewHolder holder, int position) {
Uri imageUri = Uri.parse(list.get(position).getImageUri());
photosStorageReference = FirebaseStorage.getInstance().getReference();
photosStorageReference.child(Constant.PHOTOS_FIREBASE).child(userId)
.child(Constant.USER_PROFILE_PICTURE_FOLDER).child(imageUri.getLastPathSegment())
.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
SimpleTarget target = new SimpleTarget<Bitmap> (200, 200) {
@Override
public void onResourceReady(@NonNull Bitmap bitmap, @Nullable Transition<? super Bitmap> transition) {
imageView.setImageBitmap(bitmap);
}
};
GlideApp.with(context).asBitmap().load(uri).diskCacheStrategy(DiskCacheStrategy.DATA).apply(
RequestOptions.circleCropTransform()).into(target);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, e.getMessage());
}
});
}
ПРОБЛЕМА:
Все работает нормально, однако, метод onSuccess
выполняет работу в основном потоке, и он синхронный, поэтому приложение ожидает между каждым получением изображения.
1025 *
Есть в любом случае достичь извлечения изображения из Firebase быстрее Может быть, как установить соединение с Firebase на более высоком эталонном уровне, , например:
gs: //appname-b4532.appspot.com/Photos/
После открытия соединения переходите по идентификаторам пользователей и извлекаете их соответствующие изображения при переходе по подпутьу?
userId01 / Profile_picture_folder / image_01
userId02 / Profile_picture_folder / image_02
userId03 / Profile_picture_folder / image_03
..ect