Как получить ссылку на утилиту ProgressBar в панели post-execute метода AsyncTask - PullRequest
0 голосов
/ 04 марта 2019

Вот сценарий, который я пытаюсь решить.У меня есть макет, который содержит некоторые данные для отправки на сервер, этот макет Activity должен загружать несколько файлов (вложений), которые перечислены с использованием RecyclerView.Adapter.В каждом вложении, указанном в нижней части моего макета, есть индикатор выполнения, который показывает состояние или процент файла, который был загружен на сервер.При нажатии кнопки «Отправить» он вызывает AsyncTask, а в методе onPostExecute этого макета Activity я хочу загрузить свои вложения.

Как лучше всего решить эту проблему?Пожалуйста, помогите.

1 Ответ

0 голосов
/ 04 марта 2019

Если ваша асинхронная задача является внутренним классом действия или фрагмента, вы можете просто вызвать метод, который живет в действии или фрагменте, из onPostExecute

class MyActivity extends Activity
{

    public void showOrHideProgress(Result result)
    { 
        // your code here
    }

    class MyAsyncTask extends AsyncTask
    { 
        private final WeakReference><View> progressBarReference;

        public MyAsyncTask(@NonNull View progress)
        {
            this.progressBarReference = new WeakReference<>(progress); 
        }

        @Override
        protected void onPostExecute(Result result)
        {
            super.onPostExecute(result);
            showOrHideProgress(result); // or do something with progressBarReference
        }
    }

}

...