关于android.os.NetworkOnMainThreadException异常

本文介绍了在Android开发中遇到的NetworkOnMainThreadException异常及其解决方法。该异常发生在应用目标API级别为Honeycomb及以上时,在主线程进行网络操作的情况。文章提供了通过调整targetSdkVersion或使用非UI线程执行网络操作来解决此问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发使用网络连接的android应用时,遇到这么一个问题,只要一连接网络就报下面这个异常

 

android.os.NetworkOnMainThreadException

异常截图

查了下API和源码,发现原来在4.0之后,使用网络时都会用到

 

StrictMode

中 AndroidBlockGuardPolicy的检查策略,如果在UI线程连接网络就会报这个异常,尝试了一下把AndroidMainfest中android:targetSdkVersion="15"去掉或者更换成更低的版本,这个异常就不会报了。最根本的解决办法是把这些网络操作放到非UI线程去执行。

 

在API文档中这一点也有了说明,这样也好,避免我们把耗时的网络操作放到UI线程中去执行,提高应用的用户体验。


在此记一下,免得以后忘记,也分享出来,希望朋友们不会再范同样的错误了。

 

 

API说明贴出来:

 

The exception that is thrown when an application attempts to perform a networking operation on its main thread.

This is only thrown for applications targeting the Honeycomb SDK or higher. Applications targeting earlier SDK versions are allowed to do networking on their main event loop threads, but it's heavily discouraged. 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值