アクティビティの開始時にサービスを待つ方法
-
28-09-2019 - |
質問
私は、単一のサービスと通信し、そのサービスの設定を開始、停止、または変更するために使用されるアクティビティを備えたアプリケーションを作成しています。からシングルトンアプローチを使用しました これ ヒント。
私の問題は、忙しい待機が私のために機能しておらず、アクティビティがブロックされるため、リスナーをサービスに添付することはできないということです。アプリケーションの開始時にサービスを開始するか、現在のインスタンスを取得してもらいたいので、忙しい待機をOnCreateに置きます。私はこれを非常に間違っていると思いますが、どうすればこれを適切に行うことができますか?
また、これに対するより良いアプローチがある場合は、リンクやガイドを投稿してください。Android開発者サイトで混乱していることがわかります。P
ありがとう!
解決
このヒントからシングルトンアプローチを使用しました。
それをしないでください。使用する bindService()
代わりにローカルバインディングパターンがあり、サービスの準備ができたら通知されます。また、サービスによって公開されたAPIにアクセスでき、バインドされると使用を開始できます。
他のヒント
問題は、手続き型とイベント駆動型プログラミングの1つであり、AndroidのUIが後に構築されています。
OnCreateはイベントです。サービス接続の通知もイベントです。 OnCreateから戻るまで、サービス接続通知は(発生したとしても)配信されません。
アクティビティのスタートアップを2つの部分に分割できますか?最初はOncreateで行われ、2番目はサービス接続に応答しますか?
所属していません StackOverflow