1
我有一个Android应用程序,我想监视一个文件夹。我提供了一项服务(即使用户杀死应用程序,我也要不停地监视文件夹),并将文件夹的路径放在Intent的附加内容中。在服务中,我有一个FileObserver应该监视我的文件夹,并在文件夹内创建文件时触发事件。问题是事件从未被触发。 我做错了什么?谢谢!监控Android服务中的文件夹
@Override
public int onStartCommand(Intent intent, int flags, int startId){
String mainFolder = intent.getStringExtra("mainFolder");
Toast.makeText(getApplicationContext(), "Service start! Main folder is: " + mainFolder, Toast.LENGTH_LONG).show();
FileObserver observer = new FileObserver(mainFolder) {
@Override
public void onEvent(int event, String path) {
if (path == null) {
return;
}
if (FileObserver.CREATE == event) {
Toast.makeText(getApplicationContext(), "This file was creted: " + path, Toast.LENGTH_LONG).show();
}
}
};
observer.startWatching();
return START_REDELIVER_INTENT;
}
谢谢你的回答!我知道一个服务不会永远运行,但是“return START_REDELIVER_INTENT;”声明应该重新打开该服务。 –
@AlexHash:是的,但由于您的服务不是前台服务,所以在Android 8.0+上,它会运行一分钟左右,然后停止。 – CommonsWare