Android异常:android.os.NetworkOnMainThreadException

2023-11-03

Android 4.1项目:使用新浪微博分享时报:

  android.os.NetworkOnMainThreadException

网上搜索后知道是因为版本问题,在4.0之后在主线程里面执行Http请求都会报这个错,也许是怕Http请求时间太长造成程序假死的情况吧。那么网上的朋友也给出了相应的解决方案,这叫上有政策下有对策:

一:在发起Http请求的Activity里面的onCreate函数里面添加如下代码(红色代码)

	super.onCreate(savedInstanceState);
		// 全屏幕显示
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);
		setContentView(R.layout.account);
		
	    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath().build());


 

如果正在做的项目不是Android 4.0的是看不到StrictMode类的。我也是用的网上给的com_weibo_android.jar。但是这个jar包下载下来的时候是2.3的,要先转换成Android 4.0的项目,再在分享对应的ShareActivity的onCreate()函数中添加上面的两行代码。这样就不会报这个错误了。

二:使用Thread、Runnable、Handler这三个类:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.share_mblog_view);
    new Thread(runnable).start();
}

Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        Bundle data = msg.getData();
        String val = data.getString("value");
        Log.i("mylog","请求结果为-->" + val);
    }
}

Runnable runnable = new Runnable(){
    @Override
    public void run() {
        //
        // TODO: http request.
        //
        Message msg = new Message();
        Bundle data = new Bundle();
        data.putString("value","请求结果");
        msg.setData(data);
        handler.sendMessage(msg);
    }
}

自己走了不少弯路。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android异常:android.os.NetworkOnMainThreadException 的相关文章

  • QNX网络驱动-设备驱动编写处理方式

    锋影 e mail 174176320 qq com 第一部分 QNX系统的安装与使用 1 QNX的微内核 甚至不包括进程管理 仅提供进程间的通信 Software Bus 但在实际编译的系统中 仍然是进程调度 同步 进程间通信等编译在同一
  • Spring的基本使用

    大家好我是栋zzzz 今天介绍一下Spring的基本使用 为了更好的熟悉Spring 可以先看一下我前面的文章 初识Spring 目录 一 Spring的创建和使用 1 创建一个Maven项目 2 添加Spring框架支持 3 添加启动类
  • YOLO系列训练时出现loss出现nan值或者测试时P\R\map全部为0值的解决办法(GTX16xx系列显卡大坑)

    目录 0 前言 用处不大 可以直接看解决办法 1 产生问题的原因 2 解决办法 YOLO V5 YOLO V7 2 小结 这个问题是GTX16xx用户的大坑 基本上每个GTX16xx用户使用YOLO系列算法 都会遇到这些问题 这个方法是不彻
  • zutuanxue.com-linux磁盘管理基本管理

    linux磁盘管理基本管理 开课 本章我们将学习到磁盘管理的相关知识 这部分知识在我们以后的工作中非常重要 它可以让我们知道如何去规划磁盘 如何去使用磁盘 如何去提高磁盘的利用率 这些都会影响服务器的性能和效率 而服务器性能和效率会影响到我
  • 聪明的人脸识别1——Keras 搭建自己的Facenet人脸识别平台

    聪明的人脸识别1 Keras 搭建自己的Facenet人脸识别平台 学习前言 什么是Facenet 源码下载 Facenet的实现思路 一 预测部分 1 主干网络介绍 2 根据初步特征获得长度为128的特征向量 3 l2标准化 4 构建分类
  • H5页面跳转关注微信公众号页面

    实现点击就跳转到关注公众号的页面 实现点击就跳转到关注公众号的页面 如下图 如果已关注 就会是发消息 如果未关注 发消息的按钮就会是关注 实现步骤 1 登录 微信公众号 后台 F12打开网页调试模式 2 打开Sources 搜索 uin b
  • HashMap中put方法(白话加源码分析)

    一 首先不看代码用白话分析一下流程 我们在使用put方法的时候会传进key和value参数 在我们将这两个参数传入后 第一步 我们的put方法会去判断这个hashmap是否为null 或者长度是否为0 如果是则对hashmap数组进行res
  • 数据处理:归一化与标准化

    归一化与标准化 归一化和标准化是数据预处理时常用的方法 它们都可以将数据映射到特定的区间内 但是具体的实现方式和应用场景有所不同 1 归一化与标准化的相同点 都能够处理特征值之间的差异性 避免特征值之间的度量不一致或者差异过大 都可以提高模
  • openseadragon实战系列基础篇(有你想要的干货)

    序言 如果你正在寻找openseadradgon的相关资料 那么我相信你一定清楚了这个插件的作用 这里就不再赘述了 openseadragon所支持的图像协议可以在官网找到 https openseadragon github io exa
  • Jvm类加载机制详解--类加载的几个阶段

    虚拟机把描述类的数据从Class文件加载到内存 并对数据进行校验 转换解析和初始化 最终形成可以被虚拟机直接使用的Java类型 这就是虚拟机类加载机制 在Java语言中 类的加载 连接和初始化过程都是在程序运行期间完成的 这是java作为动
  • 使用servlet实现用户登录

    本文简单讲述使用servlet实现用户登录 包括用户登录 退出和注册等 1 关于servlet 1 1概述 Servlet Server Applet 全称Java Servlet 未有中文译文 是用Java编写的服务器端程序 其主要功能在
  • react usecontext_鬼才!我居然把 Vue3 的原理用到了 React 上?

    前言 vue next是Vue3的源码仓库 Vue3采用lerna做package的划分 而响应式能力 vue reactivity被划分到了单独的一个package中 如果我们想把它集成到React中 可行吗 来试一试吧 使用示例 话不多
  • 什么是基于模型设计(MBD)?

    MBD Model based Design 是什么 随着嵌入式行业的快速发展 MBD作为解决专家紧缺 国内解决方案匮乏的新软件开发方式备受关注 MBD是一种通过建模自动生成代码的 Auto generation Code 开发方式 可以说
  • 对STDOUT_FILENO的理解

    分类 嵌入式 在linux系统调用中 标准输入描述字用stdin 标准输出用stdout 标准出错用stderr表示 但在一些调用函数 引用了STDIN FILENO表示标准输入才 同样 标准出入用STDOUT FILENO 标准出错用ST

随机推荐