我正在使用Dropbox Sync API并从dropbox读取文件,当我的应用程序未运行时我手动更改此文件中的值并且我再次启动应用程序时,更改没有& #39;来自我的Android应用。 file.readString()的值没有改变。几次重新启动我的应用程序后,更改将通过。我尝试了dbxFs.syncNowAndWait(),file.update()和其他一些东西来使这项工作。我似乎无法找到问题,在syncNowAndWait之后,Dropbox文件系统应该"强制检查来自服务器的新文件信息"根据文件,但这似乎不会发生。有任何想法吗?谢谢!
dbxFs.syncNowAndWait();
DbxFile file = dbxFs.open(new DbxPath("Apps/serverIP/serverIP.txt"));
sendIPBroadcast(file.readString().split("\n")[0]);
答案 0 :(得分:0)
Sync API中的所有读取都来自缓存,并且所有下载都是异步的。因此,您需要打开文件(将在上次运行应用程序时打开缓存副本)并注册一个侦听器,以便在下载新版本文件时收到通知。只有在文件保持打开状态下才会下载新版本。有关如何设置侦听器的示例,请参阅https://www.dropbox.com/developers/sync/start/android#listeners。
答案 1 :(得分:0)
我可以通过直接从Dropbox网址下载内容来解决我的问题。所以我立即拥有内容,而不必等待更新的内容被下载和缓存。为了进一步改变,我有一个监听器正在运行。
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;
}