Android 使用多个客户端将文件同步到Google Drive AppFolder

Android 使用多个客户端将文件同步到Google Drive AppFolder,android,google-drive-api,synchronization,Android,Google Drive Api,Synchronization,我正在我的应用程序中编写一个功能,将所有用户的收藏夹同步到Google Drive。此功能的全部要点是该用户的所有设备都是同步的 有些事情很值得知道: 应用程序在启动时从Google Drive中提取所有收藏夹,并将它们与本地收藏夹进行比较。如果Google Drive文件夹中有一个收藏夹不在本地存储中,则该收藏夹将添加到本地存储中,反之亦然 该应用程序使用谷歌驱动API 上面第一点的问题是比较云存储和本地存储的方式。当用户删除收藏夹,并且连接不好时,该收藏夹不会在Google Drive上

我正在我的应用程序中编写一个功能,将所有用户的收藏夹同步到Google Drive。此功能的全部要点是该用户的所有设备都是同步的

有些事情很值得知道:

  • 应用程序在启动时从Google Drive中提取所有收藏夹,并将它们与本地收藏夹进行比较。如果Google Drive文件夹中有一个收藏夹不在本地存储中,则该收藏夹将添加到本地存储中,反之亦然
  • 该应用程序使用谷歌驱动API
上面第一点的问题是比较云存储和本地存储的方式。当用户删除收藏夹,并且连接不好时,该收藏夹不会在Google Drive上删除。启动应用程序时,会再次添加相同的收藏夹。 脱机时无法启动应用程序,因此无法脱机删除收藏夹

我正在考虑一种方法来制作某种“更改日志”,以查看收藏夹是否被删除或添加,其中包含添加/删除的时间,以及某种设备id。(我现在正在大声思考)问题是,在使用应用程序一段时间后,更改日志文件变得相当大(记录每个收藏夹的添加和删除)

我面临的问题不是代码,而是同步的工作方式和检查收藏夹的方式。我曾尝试将收藏夹提交到Google Drive,但这会占用大量空间(而且无法轻松调试)

请大声想一想(在评论中哈哈),我不确定我将如何应对这个挑战,我需要有人给我指出正确的方向

欢迎任何解决方案。

允许应用程序在未运行时接收
ChangeEvents
。例如,当其关心的文件或文件夹发生更改时,应用程序可能会显示通知,即使该更改是在应用程序未运行时发生的

以下示例代码显示了将更改订阅添加到文件时可能实现的逻辑:

DriveFile file = Drive.DriveApi.getFile(mGoogleApiClient,
mSelectedFileId);
file.addChangeSubscription(mGoogleApiClient);
处理更改订阅事件

要处理更改订阅事件,必须创建一个类,该类扩展
DriveEventService
并重写
onChange
方法。这是对
changeent
进行特定于应用程序的处理的地方

public class MyDriveEventService extends DriveEventService {

@Override
public void onChange(ChangeEvent event) {
Log.d(TAG, event.toString());
// Application-specific handling of event.
}

}
将其添加到AndroidManifest.xml文件中

<application ...>
    ...
    <service android:name=".MyDriveEventService" android:exported="true">
        <intent-filter>
            <action android:name="com.google.android.gms.drive.events.HANDLE_EVENT"/>
        </intent-filter>
    </service>
</application>
(驱动器RESTAPI):

驱动器API提供推送通知,让您可以监视资源的更改。您可以使用此功能提高应用程序的性能。它允许您消除轮询资源以确定资源是否已更改所涉及的额外网络和计算成本。每当监视的资源更改时,驱动器API都会notif这是你的申请

你可以阅读博客了解更多信息


希望这有帮助!

这是我想要使用的实现!谢谢,但是您有跟上所有更改的想法吗?