Android4.0不能在主线程中进行HTTP请求
2013-12-17 09:33
113 查看
在Android4.0以后,会发现,只要是写在主线程(就是Activity)中的HTTP请求,运行时都会报错,这是因为Android在4.0以后为了防止应用的ANR(aplication Not Response)异常。
就针对此问题有两种解决的方法:
1.可以再Activity的onCreate()方法中加入这样一段代码,如下:
if (Build.VERSION.SDK_INT >= 11) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
//可以省略,我使用时detectLeakedClosableObjects()出现问题。
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
}
后就可以在主线程中进行网络操作了,此方法不许再2.3版本之后。
2.一般情况我们应该这样做
启动一条子线程进行你的网络请求。
// 启动线程执行下载任务
new Thread(downloadRun).start();
Runnable downloadRun = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
updateListView();
}
};
就针对此问题有两种解决的方法:
1.可以再Activity的onCreate()方法中加入这样一段代码,如下:
if (Build.VERSION.SDK_INT >= 11) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
//可以省略,我使用时detectLeakedClosableObjects()出现问题。
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
}
后就可以在主线程中进行网络操作了,此方法不许再2.3版本之后。
2.一般情况我们应该这样做
启动一条子线程进行你的网络请求。
// 启动线程执行下载任务
new Thread(downloadRun).start();
Runnable downloadRun = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
updateListView();
}
};
相关文章推荐
- Android4.0不能在主线程中进行HTTP请求
- Android4.0不能在主线程中进行HTTP请求
- HTTP请求出错(no resource): Android4.0不能在主线程中进行HTTP请求
- Android4.0不能在主线程中进行HTTP请求
- Android4.0不能在主线程中进行HTTP请求
- Android4.0不能在主线程中进行HTTP请求
- 关于android4.0中访问网络不能在主线程中进行以及Handler的使用
- android4.0以上访问网络不能在主线程中进行以及在线程中操作UI的解决方法
- 关于android4.0中访问网络不能在主线程中进行以及Handler的使用
- Android4.0不能在主线程中进行HTTP请求解决办法 1
- 【Android笔记】不能在主线程中进行网络操作
- Android 4.0以后不能在主线程能进行网络访问
- android执行远程地址,就会报android.os.Net..... 这个原因是网络操作不能在主线程进行
- android执行远程地址,就会报android.os.Net..... 这个原因是网络操作不能在主线程进行
- android 访问网络不能在主线程中进行以及在线程中操作UI的解决方法
- Android4.0版本以上不能在主线程中访问socket的解决办法
- 前端框架 更改列数后不能进行分页并且页面报错
- mapabc 地图失效不能进行任何操作
- Android4.0 以后不允许在主线程进行网络连接