Как загрузить образ хранилища Firebase на фреску, не теряя функциональности кеша? - PullRequest
0 голосов
/ 04 мая 2020

Вот как я загружаю URL-адрес изображения

StorageReference gsReference = FirebaseStorage.getInstance().getReference();

gsReference.child(<image_path>).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        // use fresco to load images
    }
});

Затем я использую Fresco следующим образом:

StorageReference gsReference = FirebaseStorage.getInstance().getReference();

gsReference.child(<image_path>).getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        ImageRequest request1 = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
                .setProgressiveRenderingEnabled(true)
                .build();
        DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setImageRequest(request1)
                .setControllerListener(this)
                .setOldController(imageView.getController())
                .build();

        imageView.setController(controller);
    }
});

Когда пользователь отключен, я теряю функцию кэширования Fresco, потому что Я должен загрузить изображение URL для использования на фреске. Таким образом, URL-адрес изображения никогда не загружается.

Как я могу извлечь изображение из кэша фрески, чтобы я мог загружать изображения даже в автономном режиме и не могу получить URL-адрес загрузки?

1 Ответ

0 голосов
/ 05 мая 2020

Для определения URL-адреса загрузки изображения по пути требуется подключение к серверам Google. Невозможно позвонить на getDownloadURL(), когда ваше устройство находится в автономном режиме.

Но поскольку URL-адрес загрузки основан исключительно на вашем <image_path>, вы можете поддерживать локальную карту <image_path> для загрузки URL-адресов и использовать ее. когда устройство находится в автономном режиме. Затем с помощью полученного URL-адреса для загрузки вы можете загрузить изображение из кэша.

Фактически большинство известных мне приложений хранят URL-адрес для загрузки в одной из баз данных Firebase (База данных реального времени или Cloud Firestore). Поскольку оба они продолжают обслуживать данные в автономном режиме, эти приложения могут уже могут продолжать использовать URL-адрес загрузки в автономном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...