停止启动时启动的服务
Stop service started at boot
我正在创建一个 android 应用程序,它在启动时通过广播接收器运行服务。该服务反过来运行文件观察器 class 来监视目录。在监控目录中创建文件时,我需要重新启动服务。是否可以在 fileobserver class 事件中重新启动服务?
您可以执行类似的操作,而不必重新启动您的服务(只需在检测到文件更改事件时更新服务状态)。
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");
}
}
}