Контроль загрузки файла из Firebase

Всем привет.

Загружаю файл из firebase, но когда мой адаптер показывает мне содержимое файла, тот еще не успевает скачаться. Подскажите красивое решение этой проблемы, пожалуйста. Пробовал блокировать поток, но android studio на меня ругается. Хорошо бы узнать в каком формате работать с потоками в это IDE (буду благодарен за ссылку на хороший гайд)

Метод скачивания:

public static File testDownloadBookForWatch(Book book, Context context) throws IOException {
        FirebaseStorage storage = FirebaseStorage.getInstance();
        StorageReference rootRef = storage.getReferenceFromUrl("gs://readlia.appspot.com");
        StorageReference islandRef = rootRef.child("books/1.txt");
        File localFile = File.createTempFile("tempBook" + String.valueOf(book.getId()), ".txt", context.getCacheDir());

        islandRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
                // Local temp file has been created
                Log.i("Download", "Book " + book.getId() + " has been download and save");
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                // Handle any errors
                Log.i("Download", "Book " + book.getId() + " has not been download");
            }
        });
        return localFile;
    }

Метод где использую скаченный файл и запускаю метод скачивания:

 mNamesBooks.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Book book = (Book) mNamesBooks.getItemAtPosition(i);
                File fileBook = null;
                try {
                    fileBook = TestModul.testDownloadBookForWatch(book, context);
                    TimeUnit.SECONDS.sleep(4); // костыль для решения проблемы
                } catch (IOException | InterruptedException e) {
                    Log.i("fileBook", String.valueOf(e));
                }
                Intent start = new Intent(context, TXTOpener.class);
                start.putExtra("pathBook", Objects.requireNonNull(fileBook).getAbsolutePath());
                startActivity(start);
            }
        });

Ответы (0 шт):