FileObserver 在后台监听,Android O

Posted

技术标签:

【中文标题】FileObserver 在后台监听,Android O【英文标题】:FileObserver listening on background, Android O 【发布时间】:2017-11-16 12:50:25 【问题描述】:

我的应用程序中有FileObserver,现在它在后台运行,如果注册了新文件 - 将其实例化上传到前台服务中的某个服务器。

android O 中,我们应该使用 FirebaseJob Dispatcher 在后台做一些工作,但我们如何将它应用于FileObserver?有什么方法可以在后台分析数据吗?或者也许从现在开始就无法使用FileObserver

【问题讨论】:

【参考方案1】:

但我们如何将它应用于 FileObserver?

你不能。

有没有办法在后台分析数据?

Android 8.0 (O) 并未改变这一点。创建一个粘性前台服务,然后忍受不可靠性,因为您的进程仍然不会永远运行。此外,请忍受用户抱怨您的应用一直在运行。

或者可能是从现在开始就无法使用 File Observer 了?

使用 FileObserver 从来都不是可靠的,因为 Android 可以随时终止任何进程,由用户选择(例如,设置中的“强制停止”)或释放系统 RAM。使用粘性前台服务可以让您拥有一个永久的服务/进程,即使它不会永远持续下去。

Android 8.0 没有改变这一切。

根据您的用例,您可以尝试切换到JobScheduler 并使用它来监控MediaStore Uri via addTriggerContentUri()

【讨论】:

感谢您的回答。好吧,我需要支持 API lvl 19 的其他事情...... JobInfo.Builder 是不可能的,并且 addTriggerContentUri() 仅在 API 24 中添加。 @A.Shevchuk:“好吧,我需要支持 API lvl 19 的其他事情”——也许在 API 级别 24+ 上使用 JobScheduler,并在旧设备。 好吧,似乎在这之后痛苦即将来临......很难支持两种不同的机制以共同的方式处理相同的事情......我最好将'FileObserver'替换为更好的东西,但似乎我现在别无选择。我会试试你的建议,谢谢!

以上是关于FileObserver 在后台监听,Android O的主要内容,如果未能解决你的问题,请参考以下文章

Android 中关于 FileObserver类监听文件状态的实践

Android 监听文件夹

Android 监控目录文件变化

Android截屏事件监听

如何在 Android 10 中替换 FileObserver?

FIleObserver 和 ContentObserver 在 Android Marshmallow 中不起作用