为什么我总是得到 "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 密钥
重现问题的步骤
- 单击
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
进行了修复
我正在制作一个最小的可行示例,以演示 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 密钥
重现问题的步骤
- 单击
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
进行了修复