为什么我总是得到 "java.lang.IllegalStateException: DriveContents already closed."

Why I always get "java.lang.IllegalStateException: DriveContents already closed."

我正在制作一个最小的可行示例,以演示 How to avoid from always loading cached app data from Google Drive

中描述的错误

我在 https://github.com/yccheok/google-drive-bug

完成了代码

该代码旨在更新现有文本文件或写入新文本文件。

但是,在测试时,我总是在 driveContents.commit

中出现异常
Status status;
try {
    status = driveContents.commit(googleApiClient, null).await();
} catch (java.lang.IllegalStateException e) {
    // java.lang.IllegalStateException: DriveContents already closed.
    Log.e(TAG, "", e);
    return false;
}

异常详情如下

java.lang.IllegalStateException: DriveContents already closed.
      at com.google.android.gms.drive.internal.zzv.zza(Unknown Source)
      at com.google.android.gms.drive.internal.zzv.commit(Unknown Source)
      at org.yccheok.demo.Utils.saveToGoogleDrive(Utils.java:233)
      at org.yccheok.demo.SaveFile123Task.doInBackground(SaveFile123Task.java:13)
      at org.yccheok.demo.SaveFile123Task.doInBackground(SaveFile123Task.java:10)
      at android.os.AsyncTask.call(AsyncTask.java:295)
      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
      at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:234)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
      at java.lang.Thread.run(Thread.java:818)

我调试了很久,还是不知道为什么。我不认为我错过了任何步骤。

设置正确 API 密钥

重现问题的步骤

  1. 单击 SAVE 123.TXT" WITH CONTENT "123" 按钮。

不确定我错过了哪些步骤,这导致异常总是在这一行抛出 - https://github.com/yccheok/google-drive-bug/blob/master/app/src/main/java/org/yccheok/demo/Utils.java#L233

谢谢。

根据https://developers.google.com/android/reference/com/google/android/gms/drive/DriveContents

Once this DriveContents instance has been committed, used for creation, or discarded, it becomes closed and any subsequent method call will throw an IllegalStateException.

我不应该在 driveFolder.createFile 之后调用 driveContents.commit

我通过 https://github.com/yccheok/google-drive-bug/commit/70919dcfe3fd9108c3af9ecf939a6c0ef03e07cc

进行了修复