我正在创建一个Android应用,该应用在启动时会通过广播接收器运行服务。该服务反过来运行fileobserver类以监视目录。在受监视的目录中创建文件时,我需要重启服务。是否可以在fileobserver类事件中重新启动服务?
答案 0 :(得分:0)
您可以执行类似的操作,而不必重新启动服务(只需在检测到文件更改事件时更新服务状态)即可。
public class MyService extends Service {
private FileObserver observer;
@Override
public int onStartCommand(final Intent intent, final int flags, final int startId) {
init("path/to/watch");
return super.onStartCommand(intent, flags, startId);
}
@Nullable
@Override
public IBinder onBind(final Intent intent) {
return null;
}
private void init(final String pathToWatch) {
observer = new FileObserver(pathToWatch) {
@Override
public void onEvent(final int event, @Nullable final String path) {
onFileChangeEvent(path);
}
};
observer.startWatching();
}
private void onFileChangeEvent(final String path) {
if(condition) {
observer.stopWatching();
init("new/path/to/watch");
}
}
}