2012-03-07 7 views
1

問題Androidアプリケーションで外部クラスを読み込むにはどうすればよいですか?

私はプログラマによって何とか拡張できるアプリケーションを作成したいと考えています。私は拡張することができるクラスのセットを持っています。私はプログラマーにjarファイルで提供しますが(後でAPIを変更することはできないので、このソリューションはあまり好きではありませんが)、それらのインターフェイスを拡張して、そのクラス。問題はこのフェーズから始まります。私は、クラスアクティビティではなく、それを拡張したい

私はその主題について読んでてきた

を知っているし、人々は通常、アンドロイドpluginableアプリケーションを実行するために意図や目的・フィルタの使用をお勧めし何。問題は、この手法ではアクティビティを使用する必要があり、メインアプリケーション内でプラグインとして機能する一連のアクティビティを起動すると便利です。私はそれを望んでいない。メインプロジェクトの外部にあるアプリケーションの開始時に一連のクラスをロードする必要があります。また、私はクラスローダについて読んしかし、いくつかのソリューションはちょっとハックであり、私は私の問題のために望んでいたものを見つけることができませんでした...

質問

それでは、どのように私は、アプリケーションによってロードすることができるクラスを作成することができますAndroidで?そして、外部で開発されたクラスを自分のアプリケーションにロードするにはどうしたらいいですか?

答えて

0

アクティビティを持たずにインテントを引き続き使用できます。意図と活動はお互いにほとんど関係がありません。唯一の共通点は、意図が活動を開始することです。あなたは、多くの理由(主にセキュリティのもの)のために、Androidでクラスローダーを使用するのが本当に疲れているはずです。最も良いことは、他のアプリが何らかのサービス(インテントサービス、またはメッセンジャーのいずれかを使用して)とインターフェースできる「ドライバアプリ」を作成することです。いずれか、またはAIDLインターフェース(Android RPC)を使用しています。 AIDLはインテントが最もシンプルで、最も柔軟性があります(実装するのは難しいですが)。

+0

インテントの問題は、クラスからインテントを起動できないことです。拡張可能部分は、別のクラスから拡張されたクラスです。私はすべてのサブクラスをチェックし、それらを私のアプリケーションに埋め込みたいと思う。 –

+0

デバイス上の他のソフトウェアへのインターフェイスを提供することは、AIDL rpcインターフェイスを使用することで最も効果的です。それはかなり退屈ですが、あなたのアプリケーションに応じて受け入れられるかもしれないし、そうでないかもしれないIPCのオーバーヘッドがあります。 –

関連する問題