API задач Firestore & Play Services (использование Tasks.whenAll ()) в Android - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь создать последовательность вызовов. Задача 1 должна быть вызвана первой, а извлеченные данные должны использоваться в задаче 2.

Мой вопрос: следующий код запрашивает 3 раза пожарную? Это дорогое решение? Или я просто должен сделать вложенный вызов task2 внутри ответа task1?

Я пытаюсь найти способ, который эффективнее использовать. Спасибо.

Задачи:

val task1 = Firestore.getUserDocument(userId).get()
val task2 = Firestore.getGlobalFields().get()

Активность:

            task1.addOnSuccessListener {
                it.toObject(User::class.java)?.let { user ->
                    this.user = user
                    til_name.setText(user.firstName)
                    til_surname.setText(user.lastName)
                }
            }.addOnFailureListener {
                it.printStackTrace()
            }



            val allTask = Tasks.whenAll(task1, task2)
            allTask.addOnSuccessListener { _ ->
                task2.addOnSuccessListener {
                    val busStops = it.data?.get(BUS_STOPS) as ArrayList<String>
                    setBusStopAdapter(busStops)
                    hideProgressDialog()

                }
            }.addOnFailureListener {
                it.printStackTrace()
                hideProgressDialog()
            }

1 Ответ

0 голосов
/ 01 сентября 2018

Задачи никогда не выполняются более одного раза. То, что вы делаете, не является «дорогим» или неэффективным. У вас может быть несколько слушателей или продолжений задачи, и все они получат точно такой же результат, потому что задача выполняется только один раз. Вы должны делать то, что вам удобнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...