从保管箱读取文件

用户名

在我的Dropbox文件系统中,有一个文件'check.txt',其中包含一个值(0/1),我必须每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()或其他方法正确更新缓存文件?

编辑:

用户名

您走在正确的轨道上。您需要将文件保持打开状态以供Sync API下载新内容,然后再侦听更改,因此请确保不要关闭它。请参阅https://www.dropbox.com/developers/sync/start/android#listeners像这样:

DbxFileStatus status = testFile.getSyncStatus();
if (!status.isCached) {
    testFile.addListener(new DbxFile.Listener() {
        @Override
        public void onFileChange(DbxFile file) {
            if (file.getSyncStatus().isCached) {
              file.update();
              // deal with the new value
            }
        }
    });
}

完成此操作后,无需每五秒钟检查一次文件……每次文件更改时都会收到通知。

(此外,您可能需要查看Datastore API。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法从保管箱下载文件

来自分类Dev

移动保管箱文件夹

来自分类Dev

在iOS中预览保管箱文件

来自分类Dev

无法从保管箱下载文件

来自分类Dev

从Terraform的保管箱中读取GCP凭据?

来自分类Dev

从保管箱文件夹下载文件

来自分类Dev

将文件上传到保管箱文件夹

来自分类Dev

如何使用保管箱下载文件

来自分类Dev

从python脚本上传文件到我的保管箱

来自分类Dev

批量重命名保管箱冲突文件

来自分类Dev

将文件从保管箱下载到服务器

来自分类Dev

如何使用wget命令下载保管箱文件?

来自分类Dev

将Outlook PST文件链接到保管箱

来自分类Dev

如何保护保管箱文件夹

来自分类Dev

上传保管箱文件后运行网页

来自分类Dev

密码保护保管箱文件的最佳方法

来自分类Dev

通过cronjob.de将文件写入保管箱

来自分类Dev

如何使用wget下载保管箱文件夹?

来自分类Dev

如何使用保管箱下载文件

来自分类Dev

保管箱文件夹中的“软链接”

来自分类Dev

永远显示“正在下载X文件...”的保管箱

来自分类Dev

非依赖保管箱

来自分类Dev

保管箱加载太晚

来自分类Dev

在将文件加载到保管箱文件夹中时,使用inotifywait移动文件

来自分类Dev

Google Webfont在保管箱上的问题

来自分类Dev

将别名放入我的保管箱

来自分类Dev

重置时更改保管箱背景

来自分类Dev

从保管箱获取最新的更改

来自分类Dev

回形针和保管箱错误