6

コンテンツ プロバイダーと同じくらい簡単にサービスと対話する方法はありますか?

たとえば、私たちが持っているコンテンツ プロバイダーでgetContentResolver()は、Context. クロスプロセス呼び出し ( ) の詳細についても心配する必要はありませんContentProvider

サービスでは、それらをバインドし、接続が確立されるのを待ってから、メモリをリークしたくない場合はバインドを解除する必要があります。さらに悪いことに、リモート サービス用のAIDLに対処する必要があります。

この例を取る:

ファイルダウンローダーモジュールがあります。現在、コンテンツ プロバイダーまたはサービスの 2 つのアプローチがあります。すべての新しいダウンロードを開始するには、両方にとって簡単です。

  • サービス: startService()。コンテキストが必要なだけです。
  • コンテンツ プロバイダー:getContentResolver()新しいダウンロードをそのキューに挿入します。また、コンテキストが必要です。

しかし、ダウンロードの進行中に、いくつかの情報 (平均速度、完了率など) を取得したいと考えています。ここに問題があります。コンテンツ プロバイダーとの通信はより簡単です。ここでも、コンテキストが必要で、必要な情報を照会するだけです。サービスの場合は、バインド、バインド解除、または独自の AIDL を構築する必要があります (リモート サービスの場合)。</p>

私がこの質問をしている理由は、上記の例では、サービスは、少なくともその名前からして、コンテンツ プロバイダーよりも適切なアプローチであるように思われるからです。

ありがとう、

4

1 に答える 1