2

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

しかし、メインアプリとすべてのプラグインが異なるapkにあるため、(データ)オブジェクトを一方から他方に簡単に渡すことができず、アプリケーションは異なるプロセスで実行され、たとえ1つのプロセスで実行されたとしても(これは達成可能です)、異なるクラスローダーがあり、これは機能しません。現在、メイン アプリからプラグインにデータを取得するための有望な方法が 2 つあります。

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

ここで、長所と短所を見逃していないかどうか、およびこれら 2 つのアプローチに顕著なパフォーマンスの違いがあるかどうかを知りたいと思います。また、どのソリューションを希望しますか? また、その理由は何ですか?

前もって感謝します!どんな返信でも大歓迎です!

4

1 に答える 1

5

コンテンツ プロバイダーは、アプリケーション間でデータ (さまざまな方法 [データベース、ファイルなど] に保存されている) を共有するための手段にすぎません。アプリケーション間でデータを共有するだけの場合は、これが最善の方法です。

ただし、サービスにデータを使用していくつかのタスクを実行させたい場合 (たとえば、提供されたいくつかの値を合計するなど) は、リモート サービスを使用することをお勧めします。

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

于 2012-03-10T11:59:15.433 に答える