【问题标题】:Dropbox Sync API not always updatingDropbox Sync API 并不总是更新
【发布时间】:2014-03-11 13:47:20
【问题描述】:

我在 Android 应用中使用 Dropbox Sync API 将照片放在 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)

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

【问题讨论】:

    标签: android dropbox dropbox-api


    【解决方案1】:

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

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

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

    【讨论】:

    • 不应该有更新的版本。这发生在文件上传的那一刻。而且即使有更新的版本,原版应该也能加载,而事实并非如此。我从同步状态和更新状态制作了一个打印屏幕。我希望这能更好地解释问题:!print-screen。如果图片未加载:dropbox.com/s/2yc2ku69nsw20t5/Knipsel.PNG
    • 你说的“原版应该可以加载,但事实并非如此”是什么意思。你在阅读文件时遇到了一些麻烦?如果是这样,是什么? (有错误吗?)
    • 我没有得到位图。 BitmapFactory 返回 null。这意味着输入流不能用于解码位图。可以处理没有较新状态的文件,不能处理具有较新状态的文件。在我看来问题是newerstatus被兑现了,但不会执行更新。
    • 我想说你应该开始调试文件内容的问题,使其无法作为位图解析。从您的屏幕截图中看起来它是一个零字节文件?也许您可以首先弄清楚该零字节文件是如何写入 Dropbox 的。当您说“不会执行更新”时,您是什么意思?
    • 当我得到 DbxFileInfo 时,大小为 0。发生了什么: - 我使用函数“writeFromExistingFile”将图片保存到 DbxFileSystem。 - 我想检查图片并使用上述问题中的代码将其加载回来。这是有效的。 - 这继续工作,但过了一段时间,有一些文件,突然大小为0,同步状态知道有一个较新的版本(为什么?),较新的版本被缓存但不推送到文件。这发生在文件上传后。在 Dropbox 上,图片还可以。 (有些文件会出现这种情况,大约一半。对于其他文件,没有问题。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多