Android java.lang.IllegalStateException:任务尚未完成(使用云存储和协同路由)
我的主要活动(UserHomePage)拥有一个带有导航标题的导航抽屉。我正在尝试使用Kotlin协程将数据加载到导航头中。主要活动代码如下所示: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
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”