我需要始终跟踪整个文件系统中删除的图像和视频(即使我的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);
}
}
答案 0 :(得分:2)
我需要始终跟踪整个文件系统中删除的图像和视频
除非您创建操作系统的修改版本,否则这是不可能的,因为您将无法始终保持服务运行。例如,用户可以在用户需要时删除您的服务。
不幸的是,下面附带的代码不起作用
首先,您对/
没有读取权限,这可能会影响FileObserver
操作。
其次,您错过了突出显示的段落in the FileObserver
documentation:
警告:如果FileObserver被垃圾收集,它将停止发送事件。为确保您继续接收事件,您必须保留对其他实时对象的FileObserver实例的引用。
您允许FileObserver
被垃圾收集。