1

私のアプリケーションは、サービスを作成する 1 つのアクティビティで構成されています。アプリケーションが実行されている限り、サービスを実行し続けたい。知っている:

  1. Android システムはメモリ不足の状態でアクティビティを強制終了する可能性があり、アクティビティがバックグラウンドにある場合は保証されません。
  2. サービスは、システムによって停止 (および強制終了) される可能性があります。
  3. サービスをアクティビティにバインドすると、サービスが停止または開始された場合にアクティビティが通知を受け取ります。ただし、アクティビティがバックグラウンド (onStop()) になると、サービスの実行が停止する場合があります。ここで間違っている場合は修正してください。
  4. アクティビティの onResume() でサービスにバインドし、onStop() で unbind() にバインドすると、アプリケーションがバックグラウンドになったときにサービスの実行が停止することがあります。アクティビティの onCreate() と onDestroy() で unbind() にバインドすると、バックグラウンドであってもアクティビティがサービスから通知を受け続けることになります。
  5. アプリケーションが実行されている限り、サービスを実行し続け、サービスからアクティビティへの通知を受け取る最良の方法は何ですか? アプリケーションにはアクティビティが 1 つしかないため、バックグラウンドでアクティビティを送信すると、アプリケーションがバックグラウンドになることに注意してください。

ありがとう

4

4 に答える 4

0

アプリケーションに使用できる場合はIntentService、 を介してサービスにデータを渡すことができますIntent。結果は、アクティビティに戻すことができますResultReceiver

于 2012-07-02T15:02:42.657 に答える
0
  1. 真実
  2. true ですが、startForeground() を使用する場合はよりまれです。
  3. サービスは通常、すべてのアクティビティのバインドが解除されるまで停止しません。しかし、最後があれば、そうなるでしょう。したがって、isFinishing() == true の場合にのみ onPause でバインドを解除すれば、バックグラウンドに移行するときにサービスが終了するのを防ぐことができます。
  4. 3を参照してください。
  5. 個人的には、Activity に Handler を設定し、サービスからメッセージを送信するのが好きです。
于 2012-07-02T15:09:26.210 に答える
0

Serviceyour を一意の にバインドすると、が終了していないか、がバインド解除Activityされていない限り、それが有効になります。にバインドし、停止するときにバインドを解除するだけです (何もする必要はありません)。ActivityserviceonCreate()activity

interface内にリスナーを作成し、serviceに実装して、これらの通知を からにActivity送信できます。グーグルで検索すると、これに関する適切な例と情報が見つかります。ServiceActivity

于 2012-07-02T15:03:51.383 に答える
0

を にバインドしている場合はServiceActivity. これは単に、アクティビティが実行されている限りサービスを実行する必要があることを意味します。アクティビティにバインドする必要がない場合、または実行中Serviceに更新する必要がない場合。を にバインドしてはなりません。この場合、実行したさまざまなアクションについて、 を使用してユーザーに通知できます。xx のダウンロードが完了したことをユーザーに通知するようなものです。UIServiceServiceActivityServiceAndroid Notifications

から達成したい目的に完全に依存しますService

于 2012-07-02T14:56:25.493 に答える