6

すべてのコード例から、#bindService を呼び出した場合にのみ (同じコンテキストで) #unbindService を呼び出したいことがわかります。これはブール値チェックによって実行されます。

ただし、 #bindService 呼び出しには同様のチェックはありません。つまり、「二重バインディング」を避けるために、最初に既にバインドされているかどうかをチェックしません。

だから私の質問 -

  1. サービスを複数回バインドし、バインドを解除するのは 1 回だけの場合、またはバインドを 1 回行ってバインドを解除するのは 1 回だけだと、「悪いことが起こりますか?」このような非対称性は私には奇妙に思えますが、誰かが答えを知っているかどうかを知りたいと思っていました. 私は今、それを理解しようとして自分で遊んでいますが、より経験豊富な開発者からの「公式」の回答を好むでしょう。
  2. 「バインド」および「バインド解除」操作と見なされるのは、単に #bind (または #unbind) API を呼び出したという事実であり、これらの呼び出しをペアにする必要があるか、またはによって示されるバインド/バインド解除状態です。 #onServiceConnected/Disconnected コールバックをペアにする必要がありますか? Google自身の例は、前者が真実であることを示しているようですが、誰か確認できますか? 前者が true の場合、最後のより微妙な質問: #bindService が false を返す場合、つまり android はサービスを解決できないため接続を試みません。その場合、#unbindService を呼び出しても安全ですか?

ありがとうございました。

4

1 に答える 1