Android 中报错 W/System.err: android.os.NetworkOnMainThreadException

    • 1. 原因
    • 2. 解决
      • 2.1 方法一 (访问少)
      • 2.1 方法二 (推荐)

1. 原因

主线程中进行网络请求异常, Android4.0 版本开始后就强制程序不能在主线程中访问网络, 要把访问网络放在独立的子线程中.

2. 解决

在 AndroidManifest.xml 文件中开启访问权限

<uses-permission android:name="android.permission.INTERNET"/>

2.1 方法一 (访问少)

在 Activity 的 onCreate() 方法中添加, 忽略这些强制策略.

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();        StrictMode.setThreadPolicy(policy);

2.1 方法二 (推荐)

创建新的线程, 启动一条子线程进行你的网络请求.

// Android 4.0 之后不能在主线程中请求 HTTP 请求new Thread(() -> {     // do something... The code of the request URL}).start();

更多相关文章

  1. android 笔记 --- Android界面刷新的方法
  2. Android(安卓)数据库SQLite的使用简单Demo
  3. android完全退出程序
  4. Android(安卓)APK应用安装原理(1)-解析AndroidManifest原理-Pack
  5. 2010-03-03 传智播客—Android(五)数据存储之五网络数据交互
  6. Android(安卓)ButterKnife框架的使用方法
  7. android lru缓存 辅助类LruCache源码解析
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. MySQL 5.7忘记root密码后修改的详细教程
  2. MySQL execute、executeUpdate、executeQ
  3. MySQL绿色版设置编码以及1067错误详解
  4. Linux下MySQL5.7.18二进制包安装教程(无默
  5. Mysql 服务 1067 错误 的解决方法:修改my
  6. Mysql 5.7.18 解压版下载安装及启动mysql
  7. 解决Win7 x64安装解压版mysql 5.7.18 win
  8. Linux/Mac MySQL忘记密码命令行修改密码的
  9. MySQL对中文进行排序详解及实例
  10. Python MySQL进行数据库表变更和查询