Android 的开发人员文档指出,您可以使用 DriveApi.OnSyncFinishCallback 来(大概)处理您的本地内容和您的 google 云端硬盘帐户之间的同步何时完成。通常,此类同步会自动发生,由 Google Play 服务透明地管理,但显然您可以通过以下调用强制同步请求:
Drive.DriveApi.requestSync(mGoogleApiClient);
我说“显然”是因为这个功能的官方文档很差,至少(https://developer.android.com/reference/com/google/android/gms/drive/DriveApi.html#requestSync(com.google.android.gms.common.api.GoogleApiClient))
无论如何,可以使用以下代码实例化 OnSyncFinishCallback:
OnSyncFinishCallback myCallback = new OnSyncFinishCallback(){
@Override
public void onSyncFinish(com.google.android.gms.common.api.Status arg0) {
// TODO Auto-generated method stub
}
};
我的问题是我在哪里以及如何注册这个回调以便在同步完成时自动调用它? requestSync 调用返回一个 PendingResult,它只有一个 setResultCallback(ResultCallback arg0) 方法,不能用于 OnSyncFinishCallback。
最佳答案
我必须说 requestSync 对我来说工作得很好(2015 年 1 月,使用 Google Play 服务 6.5.87)。我在一台设备上备份我的数据库并在另一台设备上恢复它,但在恢复之前我以这种方式调用 requestSync:
Drive.DriveApi.requestSync(mGoogleApiClient)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status result) {
if (!result.isSuccess()) {
// Sync not ok
showMessage("Sync error");
return;
}
// Sync ok. I can safely do a query to get
// the database file and restore it.
...
顺便说一下,我使用的是根文件夹,而不是应用程序文件夹。从不同设备安装/卸载应用程序时,应用程序文件夹可能会出现其他同步问题,因此目前我更愿意坚持使用根文件夹。
关于android - 如何使用 Drive Api.OnSync 完成回调(Android Google Play 服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23939356/