1

Application オブジェクトについては、 を呼び出しますbindService()onServiceConnected()コールバックはオブジェクトを受け取り、それIBinderを に渡しAsyncTaskます。

そこで、呼び出してサービス オブジェクトを取得し、このサービス オブジェクトServiceClass.Stub.asInterface(iBinderObject)を使用して何らかのメソッドを呼び出します。

これは同期メソッドであり、サービスのタイムアウト設定に影響を与えることはできません(そして、タイムアウトの実装が信頼できるかどうかは誰にもわかりません)。そのため、事前にpostDelayed()、別のスレッドで独自のタイムアウト ハンドラーを作成します。

タイムアウト コードはunbindService()、アプリケーションをサービスからバインド解除するために呼び出し、タイムアウトの結果を生成します。

タイムアウトが最初に実行された場合にサービス呼び出しを中断する方法が見つかりませんでした。これunbindService()に関しては、目に見える効果はありません。呼び出しAsyncTask.cancel(true)ても何も変わりません。このIBinderオブジェクトは、役立つ可能性のある明確なメソッドを提供していないようです。

私が観察したことは、AsyncTaskがサービス コールが返されるのを待機し続けることです。これAsyncTaskにより、標準では次の開始が大幅に遅れる可能性がありますExecutor

経験はありますか?アイデア?

4

1 に答える 1