Как я могу присвоить данные из API глобальной переменной в Android? - PullRequest
0 голосов
/ 25 февраля 2020

var datasFromApi: ArrayList = arrayListOf ()

btnNextCharacter.setOnClickListener (View.OnClickListener {

        if(checkForInternetConnection()) {

            try {
                val innerClassObject = DownloadingCharacterTask()
                innerClassObject.execute()

            }catch (e: Exception){
                e.printStackTrace()
            }    
        }
}

внутренний класс DownloadCharacterTask: 100 * * 100 *) {)

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Попробуйте,

datasFromApi = innerClassObject.execute().get();

Может получить возвращаемое значение, но блокирует UIThread на это время. То есть, когда используется get (), он является синхронным, а не асинхронным при получении возвращаемого значения. Можно использовать get (), если нет обработки, связанной с пользовательским интерфейсом.

0 голосов
/ 25 февраля 2020

AsyncTasks использует 3 типа параметров, а именно:

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {

}

Из документов :

  1. Параметры , тип параметров, отправляемых задаче при выполнении.
  2. Progress , тип единиц прогресса, публикуемых при фоновом вычислении.
  3. Результат , тип результата фонового вычисления.

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

Сказав это, вы должны пересмотреть использование AsyncTask (это ужасная вещь из прошлого), и Android скоро отбросит этого монстра. Надеюсь, это поможет.

...