1

ディレクトリに FileObserver を設定する必要があります。観察期間は、多くのページを持つ ViewPager があるため、長時間実行されるアクティビティにリンクされています。FileObserver をアクティビティ内に配置する代わりに、サービス内に配置することを考えていました。IntentService を使用するか、独自のサービスの実装をロールアウトする必要があるかどうか疑問に思っています。私の本当の懸念は、明示的に stopService(intent) を呼び出すまでサービスを停止したくないということです。しかし、IntentService 自体が停止することは理解しています。では、IntentService 自体を停止すると、FileObserver の寿命にどのように影響するのでしょうか? 非常に重要なことは、アクティビティが開始されてから、アクティビティが破棄されるまでの観察を開始したいということです。

重要な質問は次のとおりだと思います: アクティビティの onCreate で startWatching を、onDestroy で stopWatching を計画しているので、FileObserver を Service に配置する必要はありますか?

アップデート

FileObserver を使用して、監視対象のディレクトリからファイルを削除し、別のディレクトリに配置しています。実際には、新しいディレクトリを配置する前に、サイズを約 20 倍に変更します。したがって、onEventFileObserver のメソッドで処理する必要があるのはすべてです。これが、独立したスレッドを備えたサービスが重要であると考えている理由です。そして、一度に約3時間観察する必要があります。

4

1 に答える 1

2

アクティビティの onCreate で startWatching を、onDestroy で stopWatching を計画しているため、FileObserver を Service に配置する必要はありますか?

いいえ。

そうは言っても…

IntentService を使用しますか

いいえ。

または、独自のサービスの実装をロールアウトする必要がありますか?

はい。

私の本当の懸念は、明示的に stopService(intent) を呼び出すまでサービスを停止したくないということです。

これが、戻るIntentServiceときに停止するため、使用しない理由です。onHandleIntent()

では、IntentService 自体を停止すると、FileObserver の寿命にどのように影響するのでしょうか?

FileObserverそれは、ライフサイクルに関して何をしているかによって異なりIntentServiceます。また:

  • FileObserverの最後にある を削除してonHandleIntent()います。この場合、ファイルを長時間監視することはありません

  • FileObserverinを削除しています。この場合、サービスは返さonDestroy()れた直後に破棄されるため、ファイルを長時間監視することはありません。onHandleIntent()

  • をまったく削除していませんFileObserver。これはアプリのバグです

非常に重要なことは、アクティビティが開始されてから、アクティビティが破棄されるまでの観察を開始したいということです。

次にFileObserver、アクティビティを行います。

于 2016-01-07T19:52:21.050 に答える