启动时停止服务

时间:2018-07-11 21:25:04

标签: android service boot fileobserver

我正在创建一个Android应用,该应用在启动时会通过广播接收器运行服务。该服务反过来运行fileobserver类以监视目录。在受监视的目录中创建文件时,我需要重启服务。是否可以在fileobserver类事件中重新启动服务?

1 个答案:

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