2012-01-27 8 views
0

AndroidのContext.bindService()は非同期です。 trueが返っても、IBinderはすぐに利用できません。 ServiceConnectionオブジェクトを渡すと、フレームワークはそれを呼び出します。それは、少なくともそれがそうである方法です。bindService():決して来ないonServiceConnected()に対して保護する必要がありますか

bindService()がtrueを返す状況に遭遇したことがありますが、onServiceConnected()呼び出しは決して行われませんでしたか?それは私が説明し、保護しなければならない状態ですか?

私が使用するサービスは、アプリ内課金です。

答えて

0

バインドするサービスがクライアント(つまりローカルサービス)と同じプロセス内で実行されている場合、bindServiceがtrueを返すとonServiceConnectedが呼び出されないという実際的な理由はありません。サービスがリモートプロセスで実行されている場合、bindServiceがtrueを返す場合でも処理する必要のある条件が少なくとも1つあります。リモートプロセスがクラッシュした場合は、サービスが再起動されたときにonServiceDisconnectedを返し、次にonServiceConnectedを返します。もう一度、それはしばらく時間がかかるかもしれません。

バインドがtrueを返し、セキュリティ例外がスローされない場合は、妥当な時間内にonServiceConnectedを取得する必要があります。

+0

アプリ内課金はリモートです。 'com.android.vending' AKA the Market appで動作します。 –

関連する問題