выполнить callback (отобразить прогресс бар до завершения) перед переходом от одной активити к другой

Я новичок. Меня интересует лучший способ выполнить следующее при нажатии кнопки:

введите сюда описание изображения

  1. отобразить прогрессбар на переднем плане (круглый, без прогресса, просто крутилка), а текущая активность на фоне как бы, как в примере, с текстом

  2. запустить некоторый callback который соберет данные, например массив строк

  3. после окончания callbackа запускается новая активити с результатом выполнения callbackа
  4. так как предполагается что таких переходов и колбеков будет несколько хотелось бы унифицированное решение, базовый класс какой-то если возможно, чтобы было правильно. Но пока не получается даже напрямую прописать и получить результат. Куча вопросов: прогресс бар должен быть в xml активности? или его создать программно? или это вообще новая активность? помогите, пожалуйста

API 19 / ProgressDialog deprecated его использовать нельзя

public void onCleanerClick(View view) throws InterruptedException {
        Dialog dialog = new Dialog(MainActivity.this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.loading);
        dialog.show();
        ExecutorService executorService = Executors.newFixedThreadPool(1);
        Callable<String> callable = new Callable<String>() {
            @Override
            public String call() throws Exception {
                Thread.sleep(5000);
                return "sdafsfsdf";
            }
        };

        Future future = executorService.submit(callable);

        while (!future.isDone()) {
            Thread.sleep(1);
        }
        executorService.shutdown();
        dialog.dismiss();
    }

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

Автор решения: Сергей Бувака

Здесь нет понятия как правильно. Все зависит от ваших потребностей.

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

Если же вы не хотите сингл активити, то вам придется писать свой прогресс бар в каждом экране. Конечно вы можете создать какую-то базовую активити и ней прописать свой прогресс бар программно. Сам я такого не пробовал, но теоретически это возможно.

→ Ссылка