当前位置: 首页 > 知识库问答 >
问题:

Android Google Play/Drive Api

宇文灿
2023-03-14

所以我的实际问题是:我如何强迫Google Drive在我想要的时候同步我的文件,即每次发出请求时,这样就可以在使用同一应用程序的多个设备上实现同步。一定有答案,因为我认为这是您首先使用AppDataFolder的一个基本原因。

提前致谢

编辑/更新:

            // try to sync
            Drive.DriveApi.requestSync(mGoogleApiClient).setResultCallback(new ResultCallback<com.google.android.gms.common.api.Status>() {
                @Override
                public void onResult(com.google.android.gms.common.api.Status status) {
                    if (!status.getStatus().isSuccess()) {
                        Log.e("SYNCING", "ERROR" + status.getStatusMessage());
                    } else {
                        Log.e("SYNCING", "SUCCESS");
                        // execute async task to list AppFolderContents
                        new AppFolderContentsAsyncTask(getActivity()).execute();
                    }
                }
            });

我想要的解决方案是使用drive REST Api,而不是更新的(谷歌更喜欢的)drive Api(在给一个应用开发人员发邮件后,他发布了一个同步没有问题的drive应用)。我尝试将“请求同步”限制为只有当用户使用驱动器选项导航到一个片段时(而不是每个文件事务)。然而,这可能在很大程度上解决了requestSync速率限制,但它仍然可能达到该限制。另外,如果多个设备正在运行应用程序,并且链接到同一个驱动器帐户,同时在应用程序中同步/上传/删除文件,那么就有可能失去同步--这可能是一种罕见的情况,但仍然有可能。从用户体验或应用程序设计的角度来看,我不认为让用户等待同步文件是一个可行的选择。

奇怪的是,实际的驱动器应用程序允许您刷新(RequestSync?)你喜欢多少次就多少次。我在web界面上创建了20个文件夹,在每个文件夹创建后,我刷新了手机上的驱动器应用程序,它同步了20次。谷歌似乎理解同步的重要性,但选择让这变得相当困难,在他们的新驱动器API中确保这一点。如前所述,向云存储上传文件通常是即时进行的(它是排队的,但是如果您有连接,它几乎是立即进行的)。我会认为这是移动数据/更新驱动器内容的昂贵事务,而不仅仅是查询文件的同步。然而,你可以一次一个地向你的drive应用程序添加文件,它几乎立即一次一个地上传它们--当你在30秒内请求同步超过4次,然后失败,你必须“冷静”一段时间。

总的来说,我对编程/Android非常陌生--一旦我学到一些新东西,我就意识到我实际上知道的是多么少,所以如果它们是使用Drive API(而不是REST API)的更好的解决方案,我非常欢迎它。

共有1个答案

汪晨
2023-03-14

DriveAPI#RequestSync将允许您从服务器向设备请求“向下同步”。这样,在第二个设备上,您应该能够看到从第一个设备上传的内容。但是,请求同步的调用是有速率限制的(每个设备),以避免滥用,并保证驱动器API使用合理数量的数据。理想情况下,您应该仅在需要时调用请求同步。没有办法提高费率限制。

关于上传完成,在提交上传后,您不应该使用请求同步,因为这对您没有帮助(它只同步向下而不同步向上)。实际的上传将尽快进行(基于设备的连接和应用程序通过DrivePreferencesApi指定的首选项,默认情况下,这些首选项是不受限制的)。

如果您想知道实际上传发生的时间,可以使用CompletionEvents。通过这种方式,您可以测试您的应用程序,对实际发生的事情有更多的洞察力。

 类似资料:

相关问答

相关文章

相关阅读