java - android中的android os networkonmainthreadexception错误

标签 java android

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

最佳答案

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

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

您可以通过将以下代码添加到主 Activity 的 onCreate() 方法中来覆盖此线程策略。

if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = 
        new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
}

关于java - android中的android os networkonmainthreadexception错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573452/

相关文章:

Java8 : How can I use Pair in Hashmap

java - Guice:在 ServletModule 中注入(inject)拦截器

java - 安卓:操作栏

android - 将 Android 客户端用于 socketIO 时出现 SocketIO 异常

java - 监控 JBoss 的 JVisualVM 问题

java - 在静态 block 中创建对象时,它们位于内存中的什么位置?

Android开发云数据库

android - 无法下载 gradle.jar

android - 检测用户点击标记时 "Title"

java - Android 相机应用程序 - 大位图处理