1

我在尝试从 url 中提取 json 数据时收到错误“android.os.networkonmainthreadexception”。有人会告诉我为什么吗?

4

1 回答 1

1

这是由于 StrictMode.ThreadPolicy。它是从 API 级别 9 开始引入的,并且从 API 级别 11 开始更改了默认线程策略,简而言之,不允许在 UI 线程上执行网络操作(例如:HttpClient 和 HttpUrlConnection)。如果你这样做,你会得到 NetworkOnMainThreadException。

解决此问题的推荐方法是使用AsyncTask,这样网络请求就不会阻塞 UI 线程。

您可以通过将以下代码添加到主要活动的 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 回答