首页
学习
活动
专区
圈层
工具
发布

啰嗦一下android中的NetworkOnMainThreadException

相信很多Android开发者很多都遇到过android.os.NetworkOnMainThreadException 这个异常,意思就是主线程进行网络操作异常。...严格模式 在早期的Android版本(2.3之前)中,Google并没有提供一个很严格的程序编写要求,所以在那时我们可以在主线程中执行本地IO操作,网络操作等这些不规范的行为。...android.os.NetworkOnMainThreadException这个异常从Android 3.0(API 11)引入,出现情况为主线程进行网络操作。...,可以避免NetworkOnMainThreadException异常。...上述AsyncTask为一个匿名内部类的对象,由于Java中非static内部类实例会持有外部类实例的引用,AsyncTask实例持有Activity的引用,这样很容易引起内存泄露 按照Android

2.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android OkHttp是如何上位的?

    场景:初入职场的小码在开发Android时发现官方推出的HttpURLConnection库没流行多久,就被一个OkHttp的半路截胡迅速统治了Android网络请求库。甚至!...Android4.4之后,也是基于OkHttp实现的!小码决定上秋名山找老司机解惑。 老司机!为什么官方的HttpURLConnection4.4 之后也是基于OkHttp实现的。...这个OkHttp怎么那么牛? ? 这陈芝麻烂谷子的事怎么又翻出来了!OkHttp一统天下这么久了都。说起来它可是凭实力上位的甄嬛--网络库界的熹贵妃啊! ? 哦!小三打败正宫娘娘,这个瓜听着都甜啊!...想当年Android最开始的网络请求库用的是HttpClient,怎奈它问题太多。谷歌爸爸就拉出了HttpURLConnection。就像雍正爷用华妃压制皇后一样。 ?...HttpClient在Android 6.0 就彻底领盒饭了就别提它了,快说说OkHttp吧? ? 你说的这个OkHttp就像后来入宫的嬛嬛,她是大理寺卿Square家的。

    65030

    雨露均沾的OkHttp—WebSocket长连接的使用&源码解析

    正好前段时间复习OkHttp源码的时候发现了它是支持Websocket协议的,那就用它试试吧!(戏好多,演不下去了) 开淦! WebSocket介绍 先简单介绍下WebSocket。...OkHttp实现 添加OkHttp依赖 implementation("com.squareup.okhttp3:okhttp:4.7.2") 实现代码 首先是初始化OkHttpClient和WebSocket...所以这里的pingInterval就是设置心跳包发送的间隔时间,设置了这个方法之后,OkHttp就会自动帮我们发送心跳包事件,也就是ping包。...至此可以发现,其实WebSocket传输数据并不是一个简单的事,只是OkHttp都帮我们封装好了,我们只需要直接传输数据即可,感谢这些三方库为我们开发作出的贡献,不知道什么时候我也能做出点贡献呢。...[OkHttp-WebSocket源码.jpg] 参考 OkHttp源码 《WebSocket协议翻译》 附件 OkHttp源码 WebSocket功能实现源码 **** 我的公众号:码上积木,每天三问面试题

    3.9K50

    OkHttp:Android HTTP客户端入门指南

    什么是OkHttp?OkHttp是一个为Android应用和Java虚拟机打造的HTTP客户端!它的设计理念是高效、简洁且强大(这三点真的很难同时做到)。...如果你正在开发Android应用,或者任何需要网络请求的Java程序,OkHttp绝对值得你花时间学习。为什么我们需要OkHttp?直接用HttpURLConnection不行吗?当然可以!...常见错误与解决方案使用OkHttp时可能遇到一些常见问题:NetworkOnMainThreadException:在Android主线程执行网络操作。...NetworkOnMainThreadException:在Android主线程执行网络操作。 解决:使用异步API或在工作线程中执行请求。...是一个强大而优雅的HTTP客户端,它简化了Android和Java应用中的网络请求处理。

    41710

    Android OkHttp 史上最优雅的设置baseUrl

    首先,我觉得是对文件的操作不是那么的友好,如文件上传/下载、上传/下载进度监听、断点下载,这些都需要我们进行二次封装,看过Android 史上最优雅的实现文件上传、下载及进度的监听的同学知道,使用RxHttp...; 最后,也是非常重要的一点,那就是Activity/Fragment销毁时,对请求的关闭,通常我们的做法是为请求设置Tag,然后根据此Tag去关闭一系列请求,又或者拿到Call对象,去关闭单个请求,极其的麻烦...baseUrl 单独写在一个变量里,如果每次发请求,我们都需要以baseUrl+url的方式去实现,显然不够友好,那么RxHttp又是如果去解决的呢?...setDomainTo+@Domain注解中指定的name字段的值+IfAbsent,见名思议,此方法是会在域名缺席的情况下,添加我们指定的域名,如果没有指定,就会添加@DefaultDomain注解标记的默认域名...小结 怎么样,是不是最优雅的设置baseUrl?欢迎打脸。 其实,RxHttp远不止本篇文章说的这些优点,更多彩蛋,请查看源码

    1.9K30

    OkHttp深度解析:Android网络请求的王者利器

    前言说到Android开发中的网络请求库,OkHttp绝对是绕不过去的存在!!!这个由Square公司开源的HTTP客户端,已经成为了Android开发者心目中的白月光。...什么是OkHttpOkHttp是一个高效的HTTP客户端库,专门为Android和Java应用程序设计。简单来说,它就是帮你在应用中发送网络请求、接收响应的工具。...为什么选择OkHttp说实话,市面上的网络请求库挺多的。那为什么OkHttp能脱颖而出呢?性能出众OkHttp内部做了大量优化。...总结OkHttp作为Android开发中的网络请求利器,确实称得上是行业标杆。它不仅功能强大、性能出色,而且API设计友好,使用起来很舒服。当然,工具再好也需要正确使用。...合理的配置、完善的错误处理、恰当的优化策略,这些都是发挥OkHttp最大威力的关键。最后想说的是,技术在不断发展,OkHttp也在持续迭代。

    42610

    当OkHttp遇到Netty

    前言 之前写了一篇当Android遇到Netty - 掘金,里面有用OkHttp与Netty进行对比,但没有详细说明区别,本文便专门讲讲这两个框架之间的区别 OkHttp概述 OkHttp是什么?...OkHttp是一个专为Android和Java应用设计的HTTP客户端库。它简化了HTTP通信,提供了一个高效和直接的方式来发送和接收HTTP请求。...HTTP/2支持:对HTTP/2的支持意味着更高的并发性和更低的延迟。 常见用途 移动应用:在Android平台上进行网络通信时,OkHttp是首选。...同样使用WebSocket通信,为什么使用Netty而不是Okhttp OkHttp WebSocket 简洁易用: OkHttp提供了一个比较简单、易于理解和使用的WebSocket接口。...总结 OkHttp是一个专为Android和Java应用设计的高效HTTP客户端。

    1K10

    Android 开发 - 基于okhttp框架封装的开发框架oknet

    概述 在android开发中经常要访问网络,目前最流行的网络访问框架就是Okhttp了,然而我们在具体使用时,往往仍然需要二次封装。我使用Builder设计模式进行了封装形成oknet开源库。...介绍 oknet是一套基于okhttp的android网络http框架,封装了请求参数处理,日志打印。...不等于0 的情形 3.支持文件上传 4.完整清晰的log日志输出 5.支持 公共参数 的配置 6.支持每个http请求的 日志 记录 7.支持 默认异常 的处理 8.支持 移除文件下载(通过...FileDownloader) 适用场景 和服务端产生约定消息结构: 返回的响应的json格式一定为: {code:0, msg:"", body:""} 参数说明: 1.服务端 响应成功 则返回对应的...//配置okhttp 缓存位置 OknetConfig.setExternalCacheDir(getExternalCacheDir()); //OknetConfig.setRequestParaInterceptor

    93100

    Android网络库:Volley、Retrofit、OkHttp和HttpURLConnection的比较与应用

    在本文中,我们将介绍三个流行的Android网络库:Volley、Retrofit和OkHttp,并分析它们的优缺点以及适用场景。...它主要解决了Android平台原生HTTP库的一些性能问题。OkHttp支持 HTTP/2 和 WebSocket 协议,可以作为其他网络库的底层实现。...它包含请求的 URL、方法、头部等信息。 Call 类表示一个请求的执行。它可以执行同步请求(execute 方法)或异步请求(enqueue 方法)。 OkHttp 支持 WebSocket 协议。...自动处理重试和超时:OkHttp会自动处理请求的重试和超时问题,简化了开发者的工作。 支持WebSocket:OkHttp支持WebSocket协议,方便进行实时通信。...OkHttp 高性能HTTP客户端,支持HTTP/2和WebSocket。 高性能,支持HTTP/2,自动处理重试和超时,支持WebSocket。

    2K10

    网络请求库全面对比和优缺点分析

    它主要解决了Android平台原生HTTP库的一些性能问题。OkHttp支持 HTTP/2 和 WebSocket 协议,可以作为其他网络库的底层实现。...它包含请求的 URL、方法、头部等信息。 Call 类表示一个请求的执行。它可以执行同步请求(execute 方法)或异步请求(enqueue 方法)。 OkHttp 支持 WebSocket 协议。...这是通过 WebSocket 接口和 RealWebSocket 类实现的。可以使用 newWebSocket 方法创建一个 WebSocket 连接。...自动处理重试和超时:OkHttp会自动处理请求的重试和超时问题,简化了开发者的工作。 支持WebSocket:OkHttp支持WebSocket协议,方便进行实时通信。...OkHttp 高性能HTTP客户端,支持HTTP/2和WebSocket。 高性能,支持HTTP/2,自动处理重试和超时,支持WebSocket。

    1.4K10

    Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP

    Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP 项目截图 这是我的目录结构 五步使用RxJava+Retrofit2+Okhttp+RxCache  第一步:导包...if (null == mRetrofit) { if (null == mOkHttpClient) { mOkHttpClient = OkHttp3Utils.getOkHttpClient....addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //设置使用okhttp...Android中也可以说采用了当前比较流行的MVC框架,在Android中:    1) 视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入,但是用xml编写了,又需要在...2) 控制层(Controller):Android的控制层的重任通常落在了众多的Acitvity的肩上,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的Acitivity

    4.6K80

    Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP

    Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP 项目截图 这是我的目录结构 五步使用RxJava+Retrofit2+Okhttp+RxCache...if (null == mRetrofit) { if (null == mOkHttpClient) { mOkHttpClient = OkHttp3Utils.getOkHttpClient....addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //设置使用okhttp...Android中也可以说采用了当前比较流行的MVC框架,在Android中:   1) 视图层(View):一般采用XML文件进行界面的描述,使用的时候可以非常方便的引入,但是用xml编写了,又需要在...2) 控制层(Controller):Android的控制层的重任通常落在了众多的Acitvity的肩上,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的Acitivity

    63920

    Android 必知必会 - 自定义 OkHttp 、OkIo 的包名

    https://micro.blog.csdn.net/article/details/80524361 在某些特殊的情况下,需要对项目中使用的 okhttp 的包名进行修改...OkHttp 版本 ,在 release 里下载对应的源码; 确定上述 OkHttp 版本对应的 OkIo 的版本,在 release 里下载对应的源码; 在 IDEA 里打开 okio 工程 修改...工程, 在 maven 任务里点击 okhttp module 的 compile 编译(必要步骤,不先执行此步骤会找不到某个类) 修改 okhttp module 的 包名 修改 okhttp...module 的 java-templates 的包名,其下的 Version.java 的 package 可能需要手动改 build 检查有无错误,并排除错误 修改 okhttp module...引用库的类时,使用的包名是修改后包名 注意: 源码里有多个 module,注意分辨目标 module OkHttp 版本有专门对应的 OkIo 版本,可通过官方 更新日志 查询 使用 IDEA 的 build

    1.4K30
    领券