首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileObserver不起作用

FileObserver不起作用
EN

Stack Overflow用户
提问于 2015-09-05 04:55:41
回答 4查看 5.9K关注 0票数 3

在我的Android应用程序中,我想从目录中检测事件。这是代码:

代码语言:javascript
复制
String path = Environment.getExternalStorageDirectory()
            + File.separator + "test2";
    Log.d("test", "path is " + path);

    FileObserver fileObserver = new FileObserver(path, FileObserver.ALL_EVENTS) {
        @Override
        public void onEvent(int event, String path) {
            Log.d("test", "event dectect " + event + " " + path);
        }
    };

    fileObserver.startWatching();

我将新文件复制到目录中。但我什么都不知道。请告诉我我在哪里出了错。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-09-05 05:10:18

不能使用局部变量来存储FileObserver,在运行该方法后,它将可用于垃圾收集。

警告:如果FileObserver被垃圾收集,它将停止发送事件。为了确保不断地接收事件,必须从其他活动对象中保留对FileObserver实例的引用。

解决方案:将其保存到字段中。

票数 18
EN

Stack Overflow用户

发布于 2018-05-31 12:31:22

增加存储权限对我有效。

票数 1
EN

Stack Overflow用户

发布于 2016-05-31 21:16:30

FileObserver似乎不工作在符号链接上,这就是Environment.getExternalStorage()返回的内容。

对我来说,诀窍是使用File.getCanonicalPath()解析链接

示例:

代码语言:javascript
复制
File file = new File(Environment.getExteranlStorage(), "myfile");
new FileObserver(file.getCanonicalPath()) ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32409638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档