Android java.lang.IllegalStateException:任务尚未完成(使用云存储和协同路由)

Android java.lang.IllegalStateException:任务尚未完成(使用云存储和协同路由),android,kotlin,google-cloud-firestore,firebase-storage,kotlin-coroutines,Android,Kotlin,Google Cloud Firestore,Firebase Storage,Kotlin Coroutines,我的主要活动(UserHomePage)拥有一个带有导航标题的导航抽屉。我正在尝试使用Kotlin协程将数据加载到导航头中。主要活动代码如下所示: class UserHomePage : AppCompatActivity() { private lateinit var binding: com.newwebtools.maun.databinding.ActivityUserHomePageBinding private lateinit var headerBinding: NavHe

我的主要活动(UserHomePage)拥有一个带有导航标题的导航抽屉。我正在尝试使用Kotlin协程将数据加载到导航头中。主要活动代码如下所示:

class UserHomePage : AppCompatActivity() {

private lateinit var binding: com.newwebtools.maun.databinding.ActivityUserHomePageBinding
private lateinit var headerBinding: NavHeaderMainBinding
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var toolbar: Toolbar
private lateinit var drawer: DrawerLayout
private lateinit var toggle: ActionBarDrawerToggle
private val currentUser = mAuth.currentUser

override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)
    binding = DataBindingUtil.setContentView(this, R.layout.activity_user_home_page)
    headerBinding = NavHeaderMainBinding.bind(binding.navView.getHeaderView(0))

    setNavHeader() //This is a runBlocking function to set nav header views

    //code continue further dealing with navigation drawer features...
我已将setNavHeader()定义如下:

private fun setNavHeader() = runBlocking {
    val name = async{mFireStore.collection("userProfiles")
        .whereEqualTo("user_id", currentUser?.uid).get().result?.documents?.first()?.getString("name")}
    val downloadUrl = async{mStorage.reference.child("profileImages/${currentUser?.uid}").downloadUrl.result}
    Log.i("UserHomePage", "Nav Header View downloadUrl is ${downloadUrl.await()}")
    headerBinding.navHeaderName.text = name.await()
    headerBinding.navHeaderPhoneNo.text = currentUser?.phoneNumber
}
运行上述代码时,我得到以下错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.newwebtools.maun, PID: 4203
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.newwebtools.maun/com.newwebtools.maun.UserHomePage}: java.lang.IllegalStateException: Task is not yet complete
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2814)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1613)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:173)
    at android.app.ActivityThread.main(ActivityThread.java:6634)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:822)
 Caused by: java.lang.IllegalStateException: Task is not yet complete
    at com.google.android.gms.common.internal.Preconditions.checkState(Unknown Source:29)
    at com.google.android.gms.tasks.zzu.zzb(Unknown Source:121)
    at com.google.android.gms.tasks.zzu.getResult(Unknown Source:12)
    at com.newwebtools.maun.UserHomePage$setNavHeader$1$name$1.invokeSuspend(UserHomePage.kt:151)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:233)
    at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.kt:116)
    at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:76)
    at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:53)
    at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
    at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:35)
    at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
    at com.newwebtools.maun.UserHomePage.setNavHeader(UserHomePage.kt:149)
    at com.newwebtools.maun.UserHomePage.onCreate(UserHomePage.kt:40)
    at android.app.Activity.performCreate(Activity.java:7074)
    at android.app.Activity.performCreate(Activity.java:7065)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2767)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1613) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:173) 
    at android.app.ActivityThread.main(ActivityThread.java:6634) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:822) 
I/Process: Sending signal. PID: 4203 SIG: 9
Application terminated.

我是科特林和安卓工作室的新手。此外,我还在研究如何使用协同程序。

您将希望使用此库,以便能够在协同程序中等待任务的结果。我已经在使用以下kotlin协同程序相关依赖项:implementation'org.jetbrains.kotlinx:kotlinx协同程序android:1.1.1'implementation'org.jetbrains.kotlinx:kotlinx协同程序播放服务:1.1.1'implementationorg.jetbrains.kotlinx:kotlinx协同程序核心:1.1.1“您将希望使用此库能够在协同程序中等待任务的结果。我已经在使用以下kotlin协同程序相关依赖项:implementation'org.jetbrains.kotlinx:kotlinx协同程序android:1.1.1'implementation'org.jetbrains.kotlinx:kotlinx协同程序播放服务:1.1.1'implementation“org.jetbrains.kotlinx:kotlinx协同程序核心:1.1.1”