2

顧客のアプリケーションで使用される会社の製品 API 用の Android SDK を作成する必要があります。SDK には、別のプロセスで実行されるバックグラウンド サービスが含まれます ( android:process="com.my.sdk.process"AndroidManifest.xml でサービスを設定することにより)。

SDK を使用するアプリケーションが複数ある場合、リソースを節約するために、各アプリケーションが 1 つのインスタンスを所有するのではなく、サービス プロセスのインスタンスが 1 つだけ存在するようにするにはどうすればよいですか?

4

1 に答える 1

1

最も簡単な方法は、別の APK でサービスを提供することです。これには、ユーザーが APP のインストール プロセスを実行するという代償が伴います。

しかし、私の理解が正しければ、これを回避し、すべてのクライアント アプリで同じサービスのインスタンスを持ち、そのうちの 1 つが任意の時点で選択され、すべてのクライアントが AIDL を使用してこの選択されたサービスと通信する必要があります。 .

私は試していませんが、次のことを試すことができます 1) 別々のプロセスでサービスをホストしますが、それらは同じプロセスを共有します 2) すべてのクライアントに存在する SDK から、インテント Intent = new Intent("this .すべての人にとって同じであるべきです");

うまくいけば、各アプリのすべてのサービス コードがコールバックを受け取るはずです。1) 最新バージョン 2) 最初に利用可能なもの 3) 機能 .. などに基づいて、選択/選択ロジックを実装できます。

次の場合のオーバーヘッドも考慮する必要があります。1) 実行中のサービスをホストしているアプリがアンインストールされた場合 2) 更新があった場合 (a) 現在実行中のサービスを更新する (b) 実行中のサービスを更新する実行していませんが、更新後、選択の候補になります。

それが機能するかどうか教えてください。

于 2014-07-15T18:10:37.023 に答える