Android:FileObserver未收到有关FS更改的通知

时间:2012-11-22 23:48:12

标签: java android service fileobserver

我需要始终跟踪整个文件系统中删除的图像和视频(即使我的UI应用程序没有运行),所以在手机启动后直接关闭它。为此,我正在使用服务和FileObserver。不幸的是,下面附带的代码不起作用(我没有使用调试器到方法

public void onEvent(int event,String file)

虽然我对FS进行了一些更改......服务开始了,显然onStarted()方法已经执行...

请帮助

public class DataChangeListener extends Service {

    private static Context context;

    @Override
    public IBinder onBind(Intent intent) {
        context = this;
        return null;
    }

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        context = this;

        FileObserver observer = new FileObserver("/") {

            @Override
            public void onEvent(int event, String file) {
                System.out.println();
            }
        };
        observer.startWatching();
    }

    @Override
    public boolean onUnbind(Intent intent) {
        return super.onUnbind(intent);
    }
}

1 个答案:

答案 0 :(得分:2)

  

我需要始终跟踪整个文件系统中删除的图像和视频

除非您创建操作系统的修改版本,否则这是不可能的,因为您将无法始终保持服务运行。例如,用户可以在用户需要时删除您的服务。

  

不幸的是,下面附带的代码不起作用

首先,您对/没有读取权限,这可能会影响FileObserver操作。

其次,您错过了突出显示的段落in the FileObserver documentation

  

警告:如果FileObserver被垃圾收集,它将停止发送事件。为确保您继续接收事件,您必须保留对其他实时对象的FileObserver实例的引用。

您允许FileObserver被垃圾收集。