我希望实现 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();
}
}
答案 0 :(得分: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/