0

我想实现一个FileObserver来在某个文件更改时写入日志。这应该在启动和关闭之间的任何时间运行。启动它后,没有活动必须再次访问它。

我写了一个Service持有我的实例FileObserver。但是 onEvent() 只触发一次,我的服务根本没有出现adb shell service list

这是实现持续后台服务的错误方法吗?

public class MyService extends Service {

private static FileObserver fileObserver;

@Override
public void onCreate() {

File file = new File("path/to/file");

    if (file.canRead()) {

        fileObserver = new FileObserver(file.getAbsolutePath(), FileObserver.MODIFY) {
            @Override
            public void onEvent(int event, @Nullable String path) {
                Log.i("FileObserver", "File modified!");
            }
        };

        fileObserver.startWatching();

    } 
}
4

1 回答 1

0

我认为你需要一个前台服务,即使你的应用程序不在前台,它也会继续运行。请参见以下示例:

http://www.truiton.com/2014/10/android-foreground-service-example/

您也可以尝试粘性服务。这将确保您的服务在被 Android 杀死时重新启动。检查以下链接。 https://www.b4x.com/android/forum/threads/creating-a-sticky-service-long-running-background-tasks.27065/

于 2018-04-18T14:44:05.190 回答