少し複雑な状況 -
- Service は個別の APK としてパッケージ化され、マニフェストにはそれ以外のものはありません。
- Service は着信要求を受け入れ、MessageHandler で処理します。
あるケースでは、ハンドラーは次のように AsyncTask を生成します。
private class XHandler implements MessageHandler { @Override public void handleMessage(Message incoming) { Bundle b = incoming.getData(); ... new XAsyncTask(...).execute(); } }
教科書の単純な非同期タスクが進行状況を報告します
- ... ICS では、ジンジャーブレッドではありません。
それは何ですか - バグですか?
AsyncTask のドキュメントには、"onProgressUpdate(Progress...)、publishProgress(Progress...) の呼び出し後に UI スレッドで呼び出される" と記載されています。しかし、スタンドアロン サービスの UI スレッドのようなものはありませんね。
サービスに関するドキュメントには、「サービスは、それをホストするアプリケーションのメイン スレッドで実行されます。デフォルトでは」と記載されていますが、これは UI スレッドを構成しますか?
UPDATE 2012/07/10: android:targetSdkVersion="10" を android:targetSdkVersion="15" に変更すると、アプリが ICS で実行されているときに同じ効果が発生します。これまでのところ唯一の有効な組み合わせは、API 15 で実行されている targetSdkVersion="10" です。