0

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

公共无效onEvent(int事件,字符串文件)

虽然我对 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);
    }
}
4

1 回答 1

2

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

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

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

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

其次,您错过了FileObserver文档中突出显示的段落:

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

您正在允许FileObserver垃圾收集。

于 2012-11-22T23:57:18.177 回答