私のアプリケーションは、サービスを作成する1つのアクティビティで構成されています。アプリケーションが実行されている限り、サービスを実行し続けたいと思います。知っている:
- Androidシステムは、メモリ不足の状態で、アクティビティがバックグラウンドで行われていると、アクティビティを強制終了する可能性があるため、保証されていません。
- システムによってサービスを停止(および強制終了)することができます。
- サービスをアクティビティにバインドすると、アクティビティはサービスが停止または開始されている場合に通知を受け取ります。ただし、アクティビティがバックグラウンドで行われると(onStop())、サービスは実行を停止することがあります。私がここで間違っているなら私を訂正してください。
- アクティビティのonResume()でサービスにバインドしたらonStop()でunbind()を実行すると、アプリケーションがバックグラウンドで起動したときにサービスの実行が停止することがあります。アクティビティのonDestroy()でonCreate()とunbind()をバインドすると、バックグラウンドでも自分のアクティビティがサービスから通知を受け取ることになります。
- サービスを実行し続けるための最善の方法は何ですかアプリケーションが実行されている限り、サービスからアクティビティへの通知を受け取ります。アプリケーションにはアクティビティが1つしかないため、アクティビティをバックグラウンドで送信すると、アプリケーションがバックグラウンドで行われることになります。
ありがとう
回答:
回答№1は0- 真実
- trueですが、startForeground()を使用するともっとまれです。
- サービスは通常、すべて停止するまで停止しませんでした活動は縛られていません。しかし、最後があるとき、それはそうするでしょう。そのため、isFinishing()== trueの場合にのみonPauseでバインドを解除すると、バックグラウンドに移行したときにサービスが停止するのを防ぐことができます。
- 3を参照してください。
- 私は個人的にはアクティビティにハンドラを設定し、サービスからそれにメッセージを送るのが好きです。
回答№2の場合は0
あなたがバインドしている場合 Service
あなたの Activity
。それは単にあなたの活動が動いている限りあなたが動くためにサービスが必要であることを意味します。バインドする必要がない場合 Service
アクティビティを持っているか、アップデートする必要はありません。 UI
あなたが Service
が走っています。あなたを縛ってはいけません Service
あなたの Activity
。この場合、さまざまなアクションに対して Service
あなたが使用しているユーザーに通知することができます Android Notifications
。 xxのダウンロードが完了したことをユーザーに通知するようなものです。
それはあなたが達成したいと思うあなたの目的に完全に依存します Service
.
回答№3の場合は0
使えるなら IntentService
あなたのアプリケーションのために、あなたはを通してサービスにデータを渡すことができます Intent
。結果は、アクティビティを通じてアクティビティに返すことができます。 ResultReceiver
回答№4の場合は0
あなたがあなたの Service
あなたのユニークな Activity
、あなたはそれが生きている限り生きているでしょう Activity
終了していない service
バインドされていません。 onCreate()
あなたを止めるとき、それは解き放たせて activity
(何もする必要はありません)。
リスナーを作成できます interface
あなたの中で service
で実装すること Activity
それで、あなたはこれらの通知をから送信することができます。 Service
〜に Activity
。あなたはグーグルならこれに関する適切な例と情報を見つけるでしょう。