- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
运行下面的代码,我在平板电脑上使用 Google Drive Android API 创建了一个文件夹。几秒钟后,从 PC 上的远程位置删除该文件夹。当我重新运行代码时,API 仍然认为“MyFolder”存在,即使它已被删除并且在平板电脑上的 Google 云端硬盘应用程序中不可见。一段时间后文件夹持久性终于消失,代码按预期工作。这是云驱动器的预期行为吗?
Query query = new Query.Builder()
.addFilter(Filters.and(Filters.eq(
SearchableField.TITLE, "MyFolder"),
Filters.eq(SearchableField.TRASHED, false)))
.build();
Drive.DriveApi.query(getGoogleApiClient(), query)
.setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(DriveApi.MetadataBufferResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Cannot create folder in the root.");
} else {
boolean isFound = false;
for(Metadata m : result.getMetadataBuffer()) {
if(!isFound) {
if (m.getTitle().equals("MyFolder")) {
showMessage("Folder exists");
isFound = true;
}
}
}
if(!isFound) {
showMessage("Folder not found; creating it.");
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("MyFolder")
.build();
Drive.DriveApi.getRootFolder(getGoogleApiClient())
.createFolder(getGoogleApiClient(), changeSet)
.setResultCallback(new ResultCallback<DriveFolder.DriveFolderResult>() {
@Override
public void onResult(DriveFolder.DriveFolderResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Error while trying to create the folder");
} else {
mThwingAlbertFolderId = result.getDriveFolder().getDriveId();
showMessage("Created a folder: " + mThwingAlbertFolderId);
}
}
});
}
}
}
});
最佳答案
您所看到的是 GDAA 的“正常”行为, 如果你仔细观察 ' Lifecycle of a Drive file 就可以解释这一点' 图(警告:我从未见过源代码,只是根据我观察到的假设)。
看,GDAA 不同于 REST Api,创建一个尽最大努力创建缓存和网络流量优化的层。因此,当您从“外部”(如网络应用程序)操作文件/文件夹时,GDAA 层在启动同步之前不知道这一事实,由其自己的逻辑控制。我自己最初假设 GooDrive 通过将某种通知发送回 GDAA 来控制这种情况,但事实显然并非如此。此外,一些谷歌员工提到了 'requestSync()' as a cure ,但我从来没有成功地让它发挥作用。
您认为您正在做的是轮询 GooDrive。但实际上,您正在轮询 GDAA(本地 GooPlaySvcs),其 DriveId 仍然有效(未更新),这与已经消失的真实 GooDrive 对象不同。
这是文档中没有明确说明的一件事。 GDAA 不是最好的 Api for EVERY application .它的缓存机制非常适合透明地管理在线/离线状态、网络流量优化。电池生命周期,...但是在您的情况下,您可能使用 REST Api 会更好,因为您得到的响应反射(reflect)了当前的 GooDrive 状态。
我自己也遇到过类似的情况,不得不从 GDAA 切换回 REST(并用基于私有(private) GCM 的通知系统替换轮询)。不用说,通过使用 REST Api,您的应用会变得更加复杂,通常需要同步适配器/服务来进行数据同步、管理网络状态,... GDAA 免费为您提供的所有东西)。
如果您想并排使用 2 个 API,可以在 Github 上使用两个相同的 CRUD 实现(GDAA、REST)。
祝你好运
关于android - 谷歌云端硬盘 Android API : Deleted folder still exists in query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32530855/
当我在 ./blah/中创建 index.js 时使用 webpack,然后执行 import blah from './blah' 它成功地从 index.js 获取 但是,我的代码编辑器现在充满了
我正在尝试使用 Webpack 4 将图像文件夹从 src 文件夹导入(移动)到 dist 文件夹,但与 Gulp 不同,这个任务在 Webpack 中看起来非常复杂,即使我什至没有尝试搞乱目前,我只
这个问题已经有答案了: Update : Move files from one folder to another based on file extension (3 个回答) 已关闭 4 年前。
我有一个文件夹路径存储在属性 nightly.basepath 中(这里的值是 /path/to/my/nightly ): /path/to/my/nightly |- build_201003
这是我的代码。非常简单,除了当它创建实际文件夹时文件夹名称而不是文件夹名称,即“Test-Folder”它创建“@{Folder=Test-folder}/” $Folders = Import-Cs
我想复制一个包含多个文件夹的文件夹,并且该文件夹包含多个文件。如果此文件夹存在,我想将它们保留在里面,并覆盖这些文件(如果存在)。如果文件不存在,则会自然添加它们。 _ = try FileManag
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我想弄清楚 IMAP 的 search (带参数: "unseen all" )命令是通过搜索邮箱中的所有文件夹还是仅搜索当前选定的文件夹来工作? IE。选择时INBOX并发出 search命令,它没
我正在尝试将我的网站重定向到 www.domain.tld/folder/ 来自 www.domain.tld/folder/index.php?params=blah¶m2=etc 我已经尝
我正在尝试让我的网站重定向到 www.domain.tld/folder/ 来自 www.domain.tld/folder/index.php?params=blah¶m2=etc 我试过:
在 Eclipse IDE 中创建新的 Java(不是 JavaEE)项目时,我看到一个选项,上面写着Allow output folders for source folders。 那是干什么用的?
我已经关注 Jenkins extending pipeline with shared libraries 有人提到 The src directory should look like stand
我在 Visual Basic 2010 中遇到一个问题:如何将所有子文件夹(仅子文件夹,而不是主文件夹)复制到另一个文件夹中? 谢谢您的帮助! 最佳答案 您需要递归遍历所有文件和文件夹并复制它们。这
我正在尝试使用 groovy 脚本从 jenkins 收集数据并收到错误: unable to resolve class com.cloudbees.hudson.plugins.folder.Fo
我使用Intellij IDEA开发一个web项目,项目中有一些源码文件夹。 我想将不同源文件夹中的代码编译到不同的编译文件夹。 我知道在myeclipse中有一个功能“allow output fo
我有 com.company.database.mysql 和 com.company.database.sqlite。我只想包含 com.company.database.mysql。 我的代码组织
我正在 Tomcat 服务器上使用 eclipse 开发一个小 servlet。 我想从这个 servlet 中包含一些 jsp 文件,它非常适合该文件 WEB-INF/website/NewFile
假设我有一个目录,里面有一堆网站名称。 即 dev.domain.com dev.domain2.com dev.domain3.com 如何将它们重命名为 .com在使用管道和/或重定向 bash
我刚刚在 redis install_server 中遇到了一个错误 script它有一个硬编码: DEFAULT_CONFIG="../redis.conf" 所以当这个脚本不是从它自己的文件夹运行
我有一个非常简单的 WAR 项目,我想在所有已编译 Java 类所在的类输出文件夹的顶部包含一个名为 META-INF 的目录。我正在使用 Maven,但似乎默认情况下 Maven 不会包含任何不是
我是一名优秀的程序员,十分优秀!