0

Android プラットフォームに比較的慣れていない私は、電子メール クライアントを実装するタスクを与えられました。このために、常にバックグラウンドで実行されるサービスを使用したいと考えています (クライアントは、サーバーがメールを受信するとすぐにメールを受信する必要があります。顧客からの要件)。

今、私はアンドロイドのサービスを調べましたが、サービスがローカルかリモートかについて良い答えが見つからないようです。

どちらかを選択した場合の主な利点/欠点は何ですか? サービスは常に実行されている必要があることに注意してください。分かってる。悪い。ただし、アプリケーションのコア機能には不可欠です。

4

2 に答える 2

2

まず、Android でこのようなリモート サーバーからの即時通知を行う正しい/効率的な方法は、Google Cloud Messagingを使用することです。GCM を使用すると、インテントをアプリケーションに送信することでデバイスをリモートでウェイクアップできます。これをシグナルとして使用して、サーバーからメッセージを取得したり、ステータス バーに通知を投稿したりできます。

永久に実行されているサービスで説明していることを実行すると、すべてが正確に行われない限り、バッテリー寿命に大きな影響を与えます. 電話を常に起動しておくことは、実行可能なオプションではありません。GCM を使用し、独自のソリューションを展開しないでください。

しかし、あなたの質問は別のプロセスでサービスを実行するかどうかについてより一般的だったので、一般的に単純であるほど良く、この場合、単純であるということは同じプロセスで実行することを意味します。メモリ内のアプリのプロセスのさまざまな要素すべてにアクセスできるため、一般的にははるかに簡単に操作できるようになります。イベントはすべて、同じメイン スレッドのルーパーで発生します。すべてがはるかに簡単になります。

サービスに別のプロセスを使用する十分な理由がない場合は、同じプロセスで実行する必要があります。

于 2012-09-03T18:47:48.920 に答える
0

一般的に、別のプロセスを使用したい理由はわかりません。あなたがそうするなら-あなたはこのすべてのAIDL、小包などで、プロセス間通信に対処しなければならないでしょう。

また、同じプロセスを維持する場合は、コンポーネント間でデータを転送する方がはるかに簡単です。

私が思ういくつかのプロセスを作成する唯一の理由は、Androidヒープの予算制限を回避しようとすることです。プロセス間で重いオブジェクトを移動して、制限を2倍にすることができます。しかし、私はあなたがこれを必要としないと思います、またそれは悪い方法でもあります。

ですから、プロセスをいじらないで、できるだけシンプルにすることをお勧めします。

幸運を

于 2012-09-03T18:26:07.033 に答える