@Comatu

Как заблокировать Activity на время загрузки файлов?

Здравсвуйте! У меня есть activity, на которой расположена кнопка загрузки книги с сервера. При ее нажатии хочу вывести отображение progressbar на все время, пока фалы загружаются. Вобщем то, типовая задача. Но файлов загружается несколько, с помощью библиотеки . И я не могу сообразить, как заблокировать дейстия в activity и вывести progressbar на время загрузки ВСЕХ файлов. Библиотека загружает файлы в отдельном потоке.
Может быть мне грузить файлы прямо в UI потоке, без библиотеки? Тогда уже точно пользователь ничего не сделает, пока файлы не загрузятся. Но это плохая идея, имхо, если соединение не очень - пойдут сбои.
Подскажите, в какую сторону "копать", может есть какие-то примеры?

Вот этот метод у меня грузит файлы и записывает в память:

private void downloadFilesBook(String[] urlsFiles) {
        mFetch = Fetch.newInstance(this);
        String folderB = "bookfiles_" + bookId;
        String fileNameForWrite = "book_" + bookId + ".json";

        File bookfolder = new File(String.valueOf(getExternalFilesDir(folderB)));
        ArrayList<String> pagesFiles = new ArrayList<>();

        for (int i = 0; i < urlsFiles.length; i++) {
            String url = urlsFiles[i];
            String path = String.valueOf(bookfolder);
            String fileName = Uri.parse(url).getLastPathSegment();
            Log.d("my2", fileName);
            Request request = new Request(url, path, fileName);
            String pageFilePath = path + "/" + fileName;
            Log.d("my2", pageFilePath);
            pagesFiles.add(pageFilePath);
            downloadId = mFetch.enqueue(request);
        }

        BookFiles bookFiles = new BookFiles();
        bookFiles.setBookID(bookId);

        ArrayList<String> pagesPath = getPagesArray(pagesFiles);
        ArrayList<String> soundsPath = getSoundsArray(pagesFiles);

        bookFiles.setPagesPath(pagesPath);
        bookFiles.setSoundsPath(soundsPath);
        Gson gson11 = new Gson();
        String filesJson = gson11.toJson(bookFiles);

        MyJSON.saveData(getApplicationContext(), filesJson, fileNameForWrite);
    }
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
@YuryBorodkin
Android dev
можно использовать ProgressDialog - поставив setCancelable(false) в его билдере.
или, что предпочтительнее, сделать кастомный DialogFragment, вызывав mDialog.setCancelable(false) в onCreateDialog()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы