Я хочу показать диалог прогресса и закрыть его после того, как onCompleteListener
ответил следующим образом:
class DialogSubjectsAdd: DialogFragment() {
private val db = FirebaseFirestore.getInstance().collection("courses")
private var docFetched = false
private var processCompleted = false
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
super.onCreateDialog(savedInstanceState)
getCoursesIndexDoc()
// show progress dialog
// wait until download operation is completed
while (!processCompleted) {}
// dismiss dialog
// todo
}
private fun getCoursesIndexDoc() {
// fetch the index document
db.document("all")
.get()
.addOnCompleteListener { task ->
if (task.isSuccessful) {
docFetched = true
}
processCompleted = true
}
}
}
Но приведенный выше код останавливает приложение.
Если я прокомментируюwhile
Зацикливать и закрывать код диалога как:
// while (!processCompleted) {}
// // dismiss dialog
диалоговое окно прогресса отображается навсегда.
Итак, почему цикл while
останавливает приложение?
Даже если значение processCompleted
никогда не станет true
, я думаю, это должно привести к тому, что индикатор выполнения будет работать вечно, а не зависать в приложении.
Но даже прогресс dialog
не отображается, потому чтоцикла while
и кнопка, которая показывает dialog
, остается нажатой, и приложение зависает, почему?