3

私のアプリケーションには、UI 用のアクティビティとバックグラウンド ポーリング用のサービスがあります。標準運賃のようです。

  1. Activity OnCreate が呼び出されなくても、AlarmManager は Service Intent をトリガーできますか?

  2. アクティビティとサービスを別のアプリケーションに入れるメリットはありますか? これにより 2 つの APK が作成され、1 つのアプリとしてマーケットに投入できなくなりますか? どうにかして 2 つのアプリケーションを 1 つのマニフェストに入れることはできますか?

  3. 両者のコミュニケーションについて:

-Activity と Service が同じアプリケーションの一部である場合 - 共通のオブジェクト (User オブジェクトなど) を Application スコープに保存して、2 つを共有することはできませんか?

-AIDL を気にする必要さえないように思えます - 2 つは Application スコープでもお互いに弱い参照を持つことができます - そして彼らはそのようにお互いにメソッドを呼び出すことができますか? それとも、ある種の Observer Pattern や BroadcastListener を使用して、互いにパブリッシュ/サブスクライブする必要がありますか?

4

1 に答える 1

3

Activity OnCreate が呼び出されなくても、AlarmManager は Service Intent をトリガーできますか?

はい。

アクティビティとサービスを別のアプリケーションに入れるメリットはありますか?

私見、いいえ。

これにより 2 つの APK が作成され、1 つのアプリとしてマーケットに投入できなくなりますか?

はい。

どうにかして 2 つのアプリケーションを 1 つのマニフェストに入れることはできますか?

純粋な XML の観点からは、マニフェストには複数の<application>要素を格納する余地があります。ただし、私の知る限り、サポートされているのは 1 つだけです。

アクティビティとサービスが同じアプリケーションの一部である場合、共通のオブジェクト (ユーザー オブジェクトなど) をアプリケーション スコープに格納して共有することはできませんか?

非常に迅速なことについては、はい。ただし、サービスがシャットダウンされる可能性があることに注意してください (Android、ユーザーなどによって)。その後、プロセスが終了し、Applicationオブジェクトがpoofになる可能性があります。私はこれを軽いキャッシングにのみ使用します。

AIDLすら気にしなくていいらしい

正しい -- これは、プロセス間のサービス バインディングにのみ必要です。

この 2 つは、アプリケーション スコープでも互いに弱い参照を持つことができます。

私は百万年でそれをしません。責任を持ってプラットフォームを使用してください。疎結合 (または、ローカル バインディング パターンの場合は、Android を意識した方法で密結合) のままで、アクティビティとサービスが通信する方法はたくさんあります。

それとも、ある種の Observer Pattern や BroadcastListener を使用して、互いにパブリッシュ/サブスクライブする必要がありますか?

それらの線に沿ったものが望ましいでしょう。アクティビティとサービスは、同じプロセス内で同時に共存する場合がありますが、相互に直接リンクするようには設計されていません。

于 2011-02-05T12:30:09.743 に答える