FileObserver不起作用

时间:2015-09-05 04:55:42

标签: android fileobserver

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

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();

我将新文件复制到目录中。但我没有得到任何事件。请告诉我我犯了什么错误。

3 个答案:

答案 0 :(得分:11)

您无法使用本地变量来存储FileObserver,在运行该方法后,它可用于垃圾回收。

  

警告:如果FileObserver被垃圾收集,它将停止发送   事件。为确保您继续接收活动,您必须保留参考   从其他一些活动对象到FileObserver实例。

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

答案 1 :(得分:0)

FileObserver似乎不适用于符号链接,这是Environment.getExternalStorage()返回的。

我的诀窍是使用File.getCanonicalPath()

解析链接

示例:

File file = new File(Environment.getExteranlStorage(), "myfile");
new FileObserver(file.getCanonicalPath()) ...

答案 2 :(得分:0)

添加存储权限对我有用。