停止启动时启动的服务

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");
        }
    }
}