【问题标题】:Firebase throwing "java.lang.IllegalStateException: Task is not yet complete" exception inside onCompleteFirebase 在 onComplete 中抛出“java.lang.IllegalStateException:任务尚未完成”异常
【发布时间】:2018-01-04 10:59:10
【问题描述】:

您好,我这里有一个情况,我有一个自定义 FirebaseAuthLiveData 类扩展 Livedata 并实现 OnCompleteListener。这个类基本上使用firebase完成所有与身份验证相关的工作。我正在关注应用程序的 mvvm 架构。所以我将观察活动中的实时数据。现在的问题是,当我尝试将 livedata 的值保存在oncomplete 中时,我遇到了Task Not Complete yet 异常,但是当我再次重新打开应用程序时,它已经登录了......我已经附上了课程,如果有人能指出什么我做错了 我使用的 firebase 版本是 11.8.0

class FirebaseAuthLiveData (private val firebaseAuth: FirebaseAuth) : LiveData<Resource<FirebaseUser>>(), OnCompleteListener<AuthResult>, OnFailureListener{

    override fun onFailure(p0: Exception) {
       value = Resource.error(p0.localizedMessage,null)
    }


    override fun onComplete(p0: Task<AuthResult>) {

        Log.d("firebase auth", "is task successful : "+p0.isSuccessful);
        if (p0.isSuccessful) {
            value = Resource.success(p0.result.user)
        }
    }

    //this is called from a viewmodel
    fun signInAnonymously( ){

        firebaseAuth.signInAnonymously()
               .addOnFailureListener(this)
               .addOnCompleteListener(this)

    }
}

这是logcat

FATAL EXCEPTION: main
Process: com.creoit.android.withdrawalwarrior, PID: 10246
java.lang.IllegalStateException: Task is not yet complete
    at com.google.android.gms.common.internal.zzbq.zza(Unknown Source)
    at com.google.android.gms.tasks.zzn.zzbjk(Unknown Source)
    at com.google.android.gms.tasks.zzn.getResult(Unknown Source)
    at com.creoit.android.withdrawalwarrior.prior_info.PriorInfoContentActivity$signInAnonymouslyWithFirebase$1.onChanged(PriorInfoContentActivity.kt:124)
    at com.creoit.android.withdrawalwarrior.prior_info.PriorInfoContentActivity$signInAnonymouslyWithFirebase$1.onChanged(PriorInfoContentActivity.kt:33)
    at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:131)
    at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:148)
    at android.arch.lifecycle.LiveData.setValue(LiveData.java:294)
    at com.creoit.android.withdrawalwarrior.firebase.livedata.FirebaseAuthLiveData.onComplete(FirebaseAuthLiveData.kt:28)
    at com.google.android.gms.tasks.zzf.run(Unknown Source)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5451)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

【问题讨论】:

    标签: android firebase firebase-authentication android-livedata


    【解决方案1】:

    FirebaseCheck 您已授予访问 Firebase 以匿名登录的权限。 为此,请转到 Firebase 身份验证/登录方法,然后启用匿名登录切换按钮。

    【讨论】:

      【解决方案2】:

      把 while ((!uri.isComplete()));像这样。

       reference.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                  @Override
      
                                  public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                      toast("Entered success listner");
                                      Task<Uri> uri = taskSnapshot.getStorage().getDownloadUrl();
                                       while ((!uri.isComplete()));
                                      Uri url = uri.getResult();
                                      databaseReference = FirebaseDatabase.getInstance().getReference("uploads");
                                      PDFDoc uploadpdf = new PDFDoc(name.getText().toString(), url.toString());
                                      databaseReference.child(databaseReference.push().getKey()).setValue(uploadpdf);
      
                                      toast("Uploaded to database");
                                      progressDialog.dismiss();
                                  }
                              })
      

      这对我有用:)

      【讨论】:

        猜你喜欢
        • 2021-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-09
        • 2012-04-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多