3

Android でのサービスのオーバーヘッドがどれほど大きいか知っている人はいますか?
そして、次の設計上の決定に役立つ他の議論があれば.

2 つの SQLite Db があり、1 つは実際のデータ (基本的に読み取り専用の製品在庫) を格納し、もう 1 つは設定、選択したアイテムのリストなどを格納します。

これらのデータベースを管理するサービスを作成しました。主な理由は次の 2 つです。

  • onDestroyで可能な「閉じるときに保存」(設定)できるようにしたい
  • データの読み込みには時間がかかるため、アプリをすばやく閉じてもデータはメモリに保持されます

設計の観点から、次のいずれかを行うことができます。

  • 両方の DB を処理する 1 つのサービスを作成する
  • それぞれが 1 つの DB を処理する 2 つのサービスを作成する

DBごとに個別のサービスを作成する方がすっきりと感じます。たとえば、一般的な基本クラスを拡張してシャットダウンやタイマーなどを処理します。また、それらを個別に構成することもできます(現時点では必要ありません)。

一方で、私はこの道を進み始めたくありません。そして、「サービス」でこのようなことを行うことに慣れると、3 つまたは 5 つのサービスの制限があることがわかります。

では、たとえば 5 つの実行中のサービスのオーバーヘッドと、5 つの異なる機能をホストする 1 つのサービスのオーバーヘッドはどうなるでしょうか? 何か案は?

4

3 に答える 3

1

Androidで効果的にサポートされているサービスの数は、状況に応じて心配する必要はありません。一部のタスクマネージャーで実行中のサービスのリストを見てきたので、ほとんどのデバイスで最大100個の「実行中」のサービスが問題にならないはずだと言う傾向があります。

ただし、実際に実行しようとしていることをサービスに実装する必要があるかどうかはわかりません。サービスが必要だと思う理由を詳しく説明していただけますか?

onDestroyで可能な「閉じるときに保存」(設定)できるようにしたい

通常のアクティビティライフサイクルコールバックでこれを行うことはできませんか?

データの読み込みには時間がかかるため、アプリをすばやく閉じるとデータがメモリに保持されます

「クイッククローズ」とはどういう意味ですか?DBデータ用にある種のキャッシュを構築しようとしていますか?

于 2011-11-10T17:14:40.853 に答える
1

Android開発ドキュメントから...

サービスを控えめに使用する

http://developer.android.com/training/articles/memory.html#Services

于 2015-11-19T21:18:12.247 に答える
0

サービスがRemoteServicesの場合、それらは別のプロセスで起動されるため、オーバーヘッドが追加され、メモリを大量に消費します。

両方のシナリオで単一のサービスを使用してみてください。

于 2011-11-10T17:14:11.407 に答える