私の Dropbox ファイル システムには、値 (0/1) を含む「check.txt」というファイルがあり、5 分ごとにチェックする必要があります。
Dropbox へのアクセスは成功していますが、このファイルの読み取りは必ずしも正しくありません。
最初、ファイルには 0 が含まれており、最初の読み取りでは正しい値 (0) が返されます。次に、1 の値を手動でファイルに変更すると、次の読み取りで再び値 0 が返され、多くの読み取りの後に正しい値が返されます。
私は Dropbox Synch を使用しており、Android のバージョンは 4.3 です。
これはコードの一部です:
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
try {
DbxAccountManager AcctMgr = DbxAccountManager.getInstance(getApplicationContext(), DropboxActivity.appKey, DropboxActivity.appSecret);
DbxFileSystem dbxFs = DbxFileSystem.forAccount(AcctMgr.getLinkedAccount());
DbxFile file = dbxFs.open(DropboxActivity.path);
DbxFileStatus status = file.getSyncStatus();
if (!status.isCached) {
file.addListener(new DbxFile.Listener() {
@Override
public void onFileChange(DbxFile file) {
try {
if (file.getSyncStatus().isCached) {
file.update();
// deal with the new value
Log.e("TAG", "*** VALUE *** " + file.readString());
}
} catch (DbxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
if((file.readString()).equals("0")) {
Log.d("TAG", "Value: " + file.readString());
}
else {
Log.d("TAG", "Value: " + file.readString());
flag = 1;
stopAlarm();
startService(new Intent(this, GpsService.class));
}
file.close();
} catch(Exception e) {
e.printStackTrace();
}
stopSelf();
return startId;
}
file.getNewerStatus()
やfile.update()
その他の方法を使用して、キャッシュ ファイルを正しく更新するにはどうすればよいですか?
編集: