5

ICSで、UrlConnectionを使用するとandroid.os.NetworkOnMainThreadExceptionエラーが発生します。これは、独自のプロセスで実行されるサービスでこのリクエストを行っており、メッセンジャーを介して非同期で呼び出された場合でも同様です。

StrictPolicyを変更しても効果はありませんが、それでもエラーが発生します。

私に何ができる?

編集:このサービスは別のプロセスで実行されます-異なるpidとすべてがあります。

4

2 に答える 2

4

ドキュメントに従って、サービスは引き続きメインスレッドで実行されます。

他のアプリケーションオブジェクトと同様に、サービスはホスティングプロセスのメインスレッドで実行されることに注意してください。つまり、サービスがCPUを集中的に使用する操作(MP3再生など)またはブロック操作(ネットワークなど)を実行する場合は、その作業を実行するための独自のスレッドを生成する必要があります。これに関する詳細は、プロセスとスレッドにあります。IntentServiceクラスは、実行する作業をスケジュールする独自のスレッドを持つServiceの標準実装として使用できます。

したがって、長時間実行されるタスク(UrlConnectionの使用など)の場合は、 IntentServiceなどを使用するか、新しいスレッドを自分で生成する必要があります。

于 2012-04-08T07:06:43.123 に答える
0

そこでネットワーク関連の作業を行いますThread。この例外は、UIのフリーズなどの問題を防ぐためにスローされます(ネットワークジョブが原因で、時間がかかる場合があります)。

于 2012-04-08T07:14:28.670 に答える