2012-03-10 8 views
1

プラグインをサポートし、これらのプラグインにデータを提供するアプリケーションを開発したいと考えています。 Androidでこのプラグインアーキテクチャを実装する正しい方法は、メインアプリケーション用のapkとプラグインごとのapkです。ContentProviderとAIDL/Messengerの使用

メインアプリケーションとすべてのプラグインが異なるapkにあるので、(データ)オブジェクトを一方から他方に簡単に渡すことはできません。アプリケーションは異なるプロセスで実行されます。達成される)彼らは異なったクラスローダーを持っていて、これはうまくいかない。現在、私は私のプラグインに私のメインのアプリからデータを取得するための2つの有望なアプローチを参照してください。

  1. ContentProviderなどの主要アプリを宣言します。これは、コンテンツ/データを別のプロセスに提供するという、私が達成したいことを正確に実行するため、私が意図したアプローチであると思われます。
  2. データオブジェクトをParcelableにして、AIDLでそれらをプッシュするか、マルチスレッドを必要としない場合はMessengerとします。私の意見では、このアプローチは、バックグラウンドでデータベースを気にするORMライブラリを使用することができるため、より簡単に思えます。 ContentProviderを初めて使用したことはありませんでしたが、私はContentProviderを使用するのは手作業でSQLクエリーを作成するようなものだと思っています(私が間違っているかどうか教えてください)。

ここで、賛否両論を忘れていたかどうか、これらの2つのアプローチの間に顕著なパフォーマンスの違いがあるかどうかを知りたいと思います。そして、あなたはどちらのソリューションを好むのですか?なぜそうしますか?

ありがとうございます!すべての返信は高く評価されています!

答えて

2

コンテンツプロバイダは、アプリケーション間で(データベース、ファイルなどのさまざまな方法で保存された)データを共有する方法です。アプリケーション間でデータを共有したい場合は、これを実行する最善の方法です。

しかし、サービスでデータでいくつかのタスクを実行したい場合(たとえば、あなたが提供するいくつかの値の合計)、リモートサービスを持つ方がよいでしょう。

通常、アプリケーションとプラグインのやりとりは、リモートサービスに似ています。この場合、メインアプリケーションは、プラグインがいくつかのアクションを実行するために使用できるリモートサービス(このアプリケーションのAPI)を公開します。

関連する問題