Dropbox Sync API并不总是更新

时间:2014-03-11 13:47:20

标签: android dropbox dropbox-api

我在Android应用中使用Dropbox Sync API将Photo放在Dropbox上。 照片存储在DbxFile中。创建文件后,我可以立即重新打开它们,但是一旦文件上传,我就无法在移动设备上打开大约一半的文件。 (在我的电脑上,它们没问题。) 对于不再可访问的文件,Sync api似乎知道有更新的版本,但由于某种原因它们没有更新。

public Bitmap getBitmapFromFile(String path) throws Exception {
    DbxFile dbxFile = dbxFileSystem.open(new DbxPath(path));

    DbxFileStatus newerStatus = dbxFile.getNewerStatus();

    if (newerStatus != null && newerStatus.isCached) {
    // this is +/- one-half of the time the case. Appears to be random?
        dbxFile.update(); //This is executed, but no update??
    }

    Bitmap bitMap = BitmapFactory.decodeStream(dbxFile.getReadStream());
    dbxFile.close();
    return bitMap;
}

当我尝试打开不再可访问的文件时,此行显示在LogCat中:

libDropboxSync.so(open) file.cpp:329: opening at  (da618e76aab is latest)

通过打开文件没有问题,此行显示:

libDropboxSync.so(open) file.cpp:336: opening at da418e76aab (latest)

为什么更新没有执行? 非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

只有在打开文件时,Sync API才会开始下载文件的新内容。要下载该文件的新版本,您需要打开该文件并将其保持打开状态(并注册一个监听器,以便您知道下载何时完成)。

在您的代码中,您打开文件然后几乎立即再次关闭它。这意味着您几乎永远不会获得新版本的文件,并且只会永远读取相同的缓存版本。

除非在非常罕见的时间条件下,我希望您的条件newerStatus.isCached永远不会成立,因为您之前只是打开了一行文件。 (打开文件应该会给你最新的缓存版本,所以不应该是一个已经缓存的新版本......否则你就已经得到了它。)