android.os.NetworkOnMainThreadException
2014-01-15 16:36
267 查看
在android 2.2上设计的下载程序,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,原来在4.0中,访问网络不能在主线程中进行,可以这么解决,在主程序中增加:
// 详见StrictMode文档
@Override
protected void onCreate(Bundle savedInstanceState)
{
String strVer=GetVersion.GetSystemVersion();
strVer=strVer.substring(0,3).trim();
float fv=Float.valueOf(strVer);
if(fv>2.3)
{
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // 这里可以替换为detectAll() 就包括了磁盘读写和网络I/O
.penaltyLog() //打印logcat,通过文件保存相应的log
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects() //探测SQLite数据库操作
.penaltyLog() //打印logcat
.penaltyDeath()
.build());
}
super.onCreate(savedInstanceState);
}
代码注意 StrictMode是2.3以上版本才有的
当然,这不是很好的作法,访问网络是很容易阻塞ui造成无响应的,最好的方法还是把访问网络放在线程中。
相关文章推荐
- 异常:android.os.NetworkOnMainThreadException
- Retrofit2遇到android.os.NetworkOnMainThreadException异常
- 异常:android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException异常
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException的解决方案
- 手把手教你解决android网络请求问题:android.os.NetworkOnMainThreadException
- 异常:android.os.NetworkOnMainThreadException
- Android 3.0 访问WebService 出现 android.os.NetworkOnMainThreadException异常
- 解决android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- 如何解决安卓网络主线程异常的问题:Caused by: android.os.NetworkOnMainThreadException [duplicate]
- android.os.NetworkOnMainThreadException的解决方案
- android.os.NetworkOnMainThreadException 异常处理
- android studio 主线程中访问网络,遇到android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException