URLからjsonデータをプルしようとすると、「android.os.networkonmainthreadexception」というエラーが発生します。理由を教えてもらえますか?
質問する
196 次
1 に答える
1
これはStrictMode.ThreadPolicyによるものです。これは、APIレベル9以降に導入され、APIレベル11以降、デフォルトのスレッドポリシーが変更されました。つまり、ネットワーク操作(HttpClientやHttpUrlConnectionなど)をUIスレッドで実行することはできません。これを行うと、NetworkOnMainThreadExceptionが発生します。
これを解決するための推奨される方法は、ネットワーク要求がUIスレッドをブロックしないようにAsyncTaskを使用することです。
以下のコードをメインアクティビティのonCreate()メソッドに追加することで、このスレッドポリシーをオーバーライドできます。
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy =
new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
于 2012-09-24T22:00:42.413 に答える