0

ファイルを監視するAndroidアプリを開発しています。私がやっていることは、ファイルの変更を監視するファイルオブザーバーを登録するサービスを作成したことです。

イベントが発生するとすぐに、SD カード内のすべてのファイルのメタデータが取得され、古いデータが新しいデータに置き換えられてアプリケーション データベースが更新されます。

したがって、ユーザーのバッテリーを節約するためにオブザーバーをサービスまたはアクティビティに登録する必要があるかどうか、そして何がより良い選択になるかを知りたいだけです。

4

2 に答える 2

1

ユーザーがアプリを使用しているときにのみ監視する場合は、オブザーバー コードをアクティビティに配置します。常時監視する場合はサービスをご利用ください。明らかに、ここでの選択はアプリの要件によって決まります。

アクティブなサービスは、より多くのファイル変更を検出し、頻繁にトリガーされる可能性があるため、より多くのバッテリーを消費する可能性があります。

オブザーバーが変更された正確なファイルについて通知できる場合は、変更のみを更新できます。

もう 1 つの最適化は、更新ごとにデータベースを使用するのではなく、かなりの数の更新が収集された後に、データベースの更新をバッチで実行することです。

于 2013-04-12T20:52:59.893 に答える
1

バッテリーの寿命については問題になりません(拡張するクラスに関係なく、CPUを引き続き使用します)

アクティビティというよりはサービスのように聞こえるので、サービスを選択したでしょう。

バッテリーを節約するために、目的に応じていくつかのことができます。

  1. FileObserver は、アクセス/変更されているファイルへの直接パスを提供する必要があるため、sd カード上のすべてのファイルを再スキャンする必要はないのではないでしょうか?

  2. サービスが変更されたファイルへのパスを保存するだけで、サービスでそれ以上何もしません。次に、アプリのインターフェイスを開始すると、非同期タスクを開始し、バックグラウンドで処理します。アプリケーションの起動時に変更されたファイルの数によっては、かなり高速になるはずです。

于 2013-04-12T14:46:40.293 に答える