1

我需要在目录上设置 FileObserver。观察期与一个长期运行的活动相关联,长期运行是因为它有一个包含很多页面的 ViewPager。我没有将 FileObserver 放在活动中,而是考虑将其放在服务中。现在我想知道我会使用 IntentService 还是应该推出自己的 Service 实现?我真正担心的是,在我明确调用 stopService(intent) 之前,我不希望服务停止。但我知道 IntentService 会自行停止。那么 IntentService 停止自身会如何影响我的 FileObserver 的生命呢?非常重要的是,我想从我的活动开始到我的活动被销毁的那一刻开始观察。

所以我想一个重要的问题是:是否有必要将我的 FileObserver 放在服务中,因为我计划在我的活动的 onCreate 中开始观察并在 onDestroy 中停止观察?

更新

我正在使用 FileObserver 从正在观察的目录中删除文件,以将它们放在另一个目录中。实际上,在放入新目录之前,我将大小调整了大约 20 倍。所以所有这些都需要在onEventFileObserver 的方法中进行,这就是为什么我认为具有独立线程的服务很重要。而且每次需要观察3个小时左右。

4

1 回答 1

2

是否有必要将我的 FileObserver 放在服务中,因为我计划在我的活动的 onCreate 中开始观看并在 onDestroy 中停止观看?

不。

话虽如此...

我会使用 IntentService

不。

还是我应该推出自己的服务实现?

是的。

我真正担心的是,在我明确调用 stopService(intent) 之前,我不希望服务停止。

这就是您不使用的原因,因为它在返回时会IntentService自行停止。onHandleIntent()

那么 IntentService 停止自身会如何影响我的 FileObserver 的生命呢?

这取决于您在生命周期FileObserver方面所做的事情IntentService。任何一个:

  • 您正在删除FileObserver末尾的onHandleIntent(),在这种情况下,您不会长时间观察文件

  • 您正在删除FileObserverin onDestroy(),在这种情况下,您不会长时间观察文件,因为该服务将在onHandleIntent()返回后不久被销毁

  • 您根本没有删除FileObserver,这是您的应用程序中的一个错误

非常重要的是,我想从我的活动开始到我的活动被销毁的那一刻开始观察。

然后FileObserver在活动中。

于 2016-01-07T19:52:21.050 回答