使用 Tasks Drive API 检查 requestSync 结果状态
Check requestSync result status with Tasks Drive API
对于之前的 API(使用 PendingResult
),我可以做类似的事情:
Drive.DriveApi.requestSync(mGoogleApiClient).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.getStatusCode() == DRIVE_RATE_LIMIT_EXCEEDED) {
//Here I know Drive rate limit was exceeded.
}
}
});
如何使用新的 Tasks
API 完成相同的操作?
对于我在 documentation 中阅读的内容:
If the request has been rate-limited, the operation will fail with the
DRIVE_RATE_LIMIT_EXCEEDED status
但是如何查看 Task<Void> requestSync
的状态?
据我所知:
Task<Void> checkSync = myDriveClient.requestSync();
checkSync.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
//how do I check the status here?
}
});
我遇到了同样的问题。其实就是onFailureListener的Exception。
但我需要将其转换为 ApiException。
Task<Void> checkSync = Drive.getDriveClient(getContext(), mGoogleSignInAccount).requestSync();
checkSync.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
//how do I check the status here?
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
ApiException apiException = (ApiException) e;
if (DriveStatusCodes.DRIVE_RATE_LIMIT_EXCEEDED == apiException.getStatusCode()) {
//Here I know Drive rate limit was exceeded.
}
}
});
希望对您有所帮助。
您可以通过调用 task.isSuccessful() 检查 requestSync 的状态。看来,如果 DRIVE_RATE_LIMIT_EXCEEDED 发生,addOnCompleteListener 无论如何都会首先被调用。
myDriveClient.requestSync()
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Log.i(TAG, "requestSync success");
} else {
Log.i(TAG, "requestSync not successful");
}
})
.addOnFailureListener(e -> {
Log.i(TAG, "requestSync failure");
});
对于之前的 API(使用 PendingResult
),我可以做类似的事情:
Drive.DriveApi.requestSync(mGoogleApiClient).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.getStatusCode() == DRIVE_RATE_LIMIT_EXCEEDED) {
//Here I know Drive rate limit was exceeded.
}
}
});
如何使用新的 Tasks
API 完成相同的操作?
对于我在 documentation 中阅读的内容:
If the request has been rate-limited, the operation will fail with the DRIVE_RATE_LIMIT_EXCEEDED status
但是如何查看 Task<Void> requestSync
的状态?
据我所知:
Task<Void> checkSync = myDriveClient.requestSync();
checkSync.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
//how do I check the status here?
}
});
我遇到了同样的问题。其实就是onFailureListener的Exception。 但我需要将其转换为 ApiException。
Task<Void> checkSync = Drive.getDriveClient(getContext(), mGoogleSignInAccount).requestSync();
checkSync.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
//how do I check the status here?
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
ApiException apiException = (ApiException) e;
if (DriveStatusCodes.DRIVE_RATE_LIMIT_EXCEEDED == apiException.getStatusCode()) {
//Here I know Drive rate limit was exceeded.
}
}
});
希望对您有所帮助。
您可以通过调用 task.isSuccessful() 检查 requestSync 的状态。看来,如果 DRIVE_RATE_LIMIT_EXCEEDED 发生,addOnCompleteListener 无论如何都会首先被调用。
myDriveClient.requestSync()
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Log.i(TAG, "requestSync success");
} else {
Log.i(TAG, "requestSync not successful");
}
})
.addOnFailureListener(e -> {
Log.i(TAG, "requestSync failure");
});