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类监听文件状态的实践