Отобразить "Загрузка: индикатор выполнения" в Android-намерении до загрузки данных

Я работаю над приложением для Android, в этом приложении у меня есть intent2, который при клике перенаправляет на intent3 и занимает некоторое время, затем загружает таблицу и отображает в ней данные сервера.

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

Я хочу показать панель загрузки до загрузки данных.

Как я могу показать ProgrssBar до тех пор, пока данные не отображаются?

2 ответа

Решение

Вероятно, вам лучше всего использовать AsyncTask в вашем "intent3":

Вы можете сделать это так:

private class performBackgroundTask extends AsyncTask <Void, Void, Void>  
      {
               private ProgressDialog Dialog = new ProgressDialog(ClassName.this);

               protected void onPreExecute()
               {
                   Dialog.setMessage("Please wait...");
                   Dialog.show();
               }

               protected void onPostExecute(Void unused)    
               {
                   try
                   {
                       if(Dialog.isShowing())
                       {
                           Dialog.dismiss();
                       }
                               // do your Display and data setting operation here
                   }
                   catch(Exception e)
                   {

                   }

            @Override
        protected Void doInBackground(Void... params) 
            {
           // Do your background data fetching here 
               return null;   
        }
      }

Вероятно, вам нужно запустить AsyncTask на onCreate при открытии нового действия, структура asynctask будет выглядеть следующим образом (взято из документа Google), обратите внимание, что если вы хотите увеличить индикатор выполнения, вам нужно реализовать onProgressUpdate и вызвать publishProgress в методе doInBackground

private class DownloadFilesTask extends AsyncTask<Void, Integer, Void> {

 protected void onPreExecute()
 {
     // show your progress bar   
 }

 protected Void doInBackground(Void... params) {
     // do your work and publish the progress
     publishProgress(progress);
 }

 protected void onProgressUpdate(Integer... progress) {
     setProgressPercent(progress[0]);
 }

 protected void onPostExecute(Void result) {
     //dismiss your progress bar
 }

}

Этот код является лишь примером, конечно, вам нужно адаптировать его к вашей логике / коду.

Проверьте этот простой и полный пример

Другие вопросы по тегам