Application オブジェクトについては、 を呼び出しますbindService()。onServiceConnected()コールバックはオブジェクトを受け取り、それIBinderを に渡しAsyncTaskます。
そこで、呼び出してサービス オブジェクトを取得し、このサービス オブジェクトServiceClass.Stub.asInterface(iBinderObject)を使用して何らかのメソッドを呼び出します。
これは同期メソッドであり、サービスのタイムアウト設定に影響を与えることはできません(そして、タイムアウトの実装が信頼できるかどうかは誰にもわかりません)。そのため、事前にpostDelayed()、別のスレッドで独自のタイムアウト ハンドラーを作成します。
タイムアウト コードはunbindService()、アプリケーションをサービスからバインド解除するために呼び出し、タイムアウトの結果を生成します。
タイムアウトが最初に実行された場合にサービス呼び出しを中断する方法が見つかりませんでした。これunbindService()に関しては、目に見える効果はありません。呼び出しAsyncTask.cancel(true)ても何も変わりません。このIBinderオブジェクトは、役立つ可能性のある明確なメソッドを提供していないようです。
私が観察したことは、AsyncTaskがサービス コールが返されるのを待機し続けることです。これAsyncTaskにより、標準では次の開始が大幅に遅れる可能性がありますExecutor。
経験はありますか?アイデア?