2014-08-27 29 views
0

我正在使用Dropbox Sync API并从保存箱中读取文件,当我的应用程序未运行时手动更改此文件中的值并重新启动应用程序时,这个改变在我的Android应用程序中没有实现。 file.readString()的值没有改变。重新启动我的应用程序几次后,所做的更改即告完成。我尝试了dbxFs.syncNowAndWait(),file.update()和其他一些东西来实现这个功能。在syncNowAndWait之后,我似乎无法找到问题,根据文档,dropbox文件系统应该“强制从服务器检查新的文件信息”,但这似乎没有发生。有任何想法吗?谢谢!Dropobx Sync API不更新

dbxFs.syncNowAndWait(); 
DbxFile file = dbxFs.open(new DbxPath("Apps/serverIP/serverIP.txt")); 
sendIPBroadcast(file.readString().split("\n")[0]); 

回答

0

Sync API中的所有读取都来自缓存,并且所有下载都是异步的。因此,您需要打开该文件(该文件将从您上次运行应用程序时打开缓存副本)并注册侦听程序,以便在下载新版本文件时收到通知。只有保持打开文件时才会下载新版本。有关如何设置侦听器的示例,请参阅https://www.dropbox.com/developers/sync/start/android#listeners

+0

我应该说我已经有一个监听器,这个工程,但只有当我的应用程序正在运行时更改文件。当我的应用程序未运行时更改值时,我继续使用旧的缓存值,是否有强制下载的方法? – user277187 2014-08-27 15:40:09

+0

下载发生的唯一方法是打开文件并保持文件打开。在文件的新版本被缓存后,您在文件上设置的侦听器应该立即启动。 (然后你可以调用'update'来读取新版本。)如果仍然没有意义,请分享你的代码来设置'DbxFile'上的监听器。 – smarx 2014-08-27 17:03:16

0

我能够通过直接从保管箱URL下载内容来解决我的问题。所以我立即拥有内容,而不必等待更新的内容被下载和缓存。为了进一步的改变,我有一个监听者正在运行。

URL url = new URL("url"); 
URLConnection ucon = url.openConnection(); 
String ip = getServerResponse(new byte[1], new DataInputStream(ucon.getInputStream())); 

private String getServerResponse(byte[] b, DataInputStream in) throws IOException { 

    String serverSentence = ""; 
    while(true){ 
     in.read(b, 0, 1); 
     String character = new String(b, "UTF-8"); 
     if(character.equals("*")) break; 
     serverSentence += character; 
    } 
    return serverSentence; 
}