私はどのような場合にサービスを開始し、どのような場合にサービスをバインドする必要がありますか?たとえば、音楽サービスのAndroidクライアントですか?システムの優先順位の違いはありますか?共通ルールはありますか。他に何か?Androidサービス:バインドまたは開始しますか?
16
A
答えて
18
startService()
は、起動後に独立して動作するサービスに使用します。音楽プレーヤーは良い例です。これらは、stopSelf()
を呼び出すか、誰かがstopService()
を呼び出すまで実行されます。
インテントを前後に送信することで、実行中のサービスと通信することができますが、ほとんどの場合、サービスを開始して単独で実行できます。
サービスとクライアントが永続的な接続を介して通信する場合は、bind()
を使用します。良い例は、ロケーション更新をクライアントに送り返すナビゲーションサービスです。バインダーはインテントよりも書くのがずっと難しいですが、実際にはこの使用例のために行く方法です。優先順位について
:プロセスのすべての活動は、彼らの視界を失ったとき、それはonStart()
で開始されたサービスをホストしている場合、プロセスは、サービスプロセスとなり、それ以外の場合はバックグラウンド・プロセスになります。サービスプロセスは、バックグラウンドプロセスよりも優先度が高くなります。詳細は、android developer siteを参照してください。
目に見えるアクティビティのないサービスプロセスの優先度が高い場合(例えば、本当に中断されるべきでない音楽プレイヤーなど)は、startForeground()
を呼び出すことができます。
関連する問題
- 1. アクティビティまたは開始サービスと異なるプロセスでサービスにバインドしますか?
- 2. Androidサービスを開始しますか?
- 3. サービスは変数に開始/バインドされませんか?
- 4. Androidサービス:サービスが開始されるまでUIで開始されたイベント/タスクをキューに入れますか?
- 5. Android NFC開始サービス
- 6. Androidは5秒ごとにサービスを開始します
- 7. アンドロイドはサービスを開始します
- 8. Androidサービスの開始/停止
- 9. Androidでサービスを開始
- 10. Android:パラメータでサービスを開始
- 11. Android Widgetはサービスを開始しません
- 12. Android BackGroundサービスは、開始サービスを使用してLollipopで動作しません
- 13. Androidサービスのデザイン - アクティビティを開始するか、必要なときにのみ開始しますか?
- 14. Androidの設定を開始するサービス
- 15. androidのダイヤラー(デフォルトまたは株ダイヤラー)でサービスを開始する方法
- 16. 新しいサービスを開始した後、Androidサービスの接続がリークしました
- 17. RHEL7システムは自動的にサービスを開始しますか?
- 18. ループを開始する前にサービスが終了しました
- 19. Android:サービスからAIDLバインド解除を開始するにはどうすればよいですか?
- 20. SQL Serverレポートサービスは、停止/開始サービスまでスタックします
- 21. Android - 起動時にサービスを開始
- 22. Androidのシステムアプリのサービスの自動開始
- 23. Androidサービス - サービスを開始して別のアクティビティにリダイレクト
- 24. Androidでアラームマネージャを使用してサービスを開始するには?
- 25. アクティビティ開始時にAndroidクラッシュが発生しましたか?
- 26. Unity3D Androidプラグイン:サービスを開始できません。インテントエラー
- 27. Unity3D Androidプラグイン:サービスを開始できません
- 28. Androidのアクティビティは並行して開始しますか?
- 29. サービスはいくつかのタスクを開始できますか?
- 30. Androidのinit.rcから新しいサービスを開始できません
Google開発者チュートリアルでは、バックグラウンドで音楽を再生している独自のサービスにアクティビティをバインドする必要がある音楽アプリケーションでは、バインディングがうまくいくと述べています。のために使用される。私はコメントしています。今私は同じ質問で苦労しています。 –
Googleの開発者向けのチュートリアルはひどいものであり、逸失しています。 –
本当にどちらの方法でも動作します。 startService()は、通常は独自のサービスを実行するための最良の選択であり、appとサービスが一定の前後の通信にある場合には、通常はbind()が最適です。しかし、startService()スタイルのサービスと前後の通信にIntentを使用することも、bind()を使ってサービスを起動して起動させることもできます。いずれにしてもあなたはしたいですか?率直に言えば、バインダーはたくさん書かなければならないので、私はそれらを避けます。また、Binderの便利なラッパーであるResultReceiverを使用することもできます。 –