У меня есть класс MainActivity
в моем проекте Android. Внутри него у меня есть AsyncTask
, чтобы получить всю информацию о моем Cars
с методом GET
моего API REST, и я хочу добавить их в ArrayList, который у меня есть в моем классе MainActivity
. Из-за этого я хотел добавить ProgressDialog
, которые заканчиваются в то же время, что и моя AsyncTask.Почему мой прогрессDialog никогда не заканчивается?
Я объявил свою ProgressDialog на вершине моего MainActivity:
private ProgressDialog progressDialog;
А также, мой ArrayList
автомобилей это определено на верхней части моего MainActivity
:
ArrayList<Car> cars = new ArrayList<Car>(); //This is the ArrayList that I have on my MainActivity class
Затем я бегу мой AsyncTask
и инициализировать мой ProgressDialog
в методе onCreate
моего MainActivity
класс:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(true);
progressDialog.setMax(100);
new chargeCars().execute();
}
А вот это мой AsyncTask:
class chargeCars extends AsyncTask<Void, Integer, Boolean> {
protected void onPreExecute(){
progressDialog.setProgress(0);
progressDialog.show();
}
protected Boolean doInBackground(Void... params) {
//Here all the code to get my information from an HTTP Response, the data it's retrieving OK.
//Here there is a for loop to add all the elements to my ArrayList cars.
{
cars.add(new Car(idCar, model));
publishProgress(10);
if(isCancelled())
break;
}
publishProgress(100);
return true;
}
protected void onProgressUpdate(Integer... values){
int progress = values[0].intValue();
progressDialog.setProgress(progress);
}
protected void onPostExecute(boolean c){
if(c)
{
Toast.makeText(MainActivity.this, "Finished task!",
Toast.LENGTH_SHORT).show();
}
if(progressDialog != null && progressDialog.isShowing()){
progressDialog.dismiss();
}
}
protected void onCancelled() {
Toast.makeText(MainActivity.this, "Canceled task",
Toast.LENGTH_SHORT).show();
}
}
Проблема это, что ProgressDialog
никогда не заканчивается, это всегда на экране. Почему он всегда отображается? Всегда ли работает моя AsyncTask? Никогда не заканчивается?
Примечание: информация моего ответа HTTP это хорошо подходит из моего API REST, потому что я положил некоторые журналы после того как я получить информацию, и это правильно и, видимо, она хранится в ArrayList
(я ставлю некоторые журналы тоже после добавьте информацию в мой ArrayList
, и она дает мне информацию, хранящуюся), но когда я положил cars.size()
после выполнения моего AsyncTask
по методу onCreate()
, он дает мне, чтобы размер равнялся 0. Это причина, по которой я положил свой ProgressDialog
внутри моего AsyncTask
, потому что я думаю, что это, возможно, еще не закончилось, и тогда я уверен, что AsyncTask закончен. Это может быть решение? Я должен сделать еще одно изменение?
Пожалуйста, принесите мне свет, потому что я полностью заблокирован здесь.
EDIT: Я отредактировал мой код.
EIDT 2: С обновленным кодом ProgressDialog исчезает только при касании экрана моего мобильного телефона. В других случаях он не исчезает.
Заранее благодарен!
Он также осуществляет себя все время, никогда не заканчивается , Почему это может быть? –