解决android.os.NetworkOnMainThreadException异常问题
来源:互联网 发布:索尼kdl55r580c装软件 编辑:程序博客网 时间:2024/06/06 18:02
文章源自于:http://www.2cto.com/kf/201402/281526.html
一个APP如果在主线程中请求网络操作,将会抛出此异常。Android这个设计是为了防止网络请求时间过长而导致界面假死的情况发生。解决方案有两个,一个是使用StrictMode,二是使用线程来操作网络请求。
第一种方法:简单暴力,强制使用,代码修改简单(但是非常不推荐)
在MainActivity文件的setContentView(R.layout.activity_main)下面加上如下代码
if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);}
第二种方法就是我使用的方法也是我要推荐的方法,将请求网络资源的代码使用Thread去操作。在Runnable中做HTTP请求,不用阻塞UI线程。
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.main_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(TAG,"请求结果:" + 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); }}
上面是比较通用的方法,我的代码:
// Android 4.0 之后不能在主线程中请求HTTP请求new Thread(new Runnable(){ @Override public void run() { cachedImage = asyncImageLoader.loadDrawable(imageUrl, position);imageView.setImageDrawable(cachedImage); }}).start();
};
0 0
- 解决android.os.NetworkOnMainThreadException异常问题
- 解决异常:android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException异常解决
- Android之android.os.NetworkOnMainThreadException异常解决
- /AndroidRuntime(1185): android.os.NetworkOnMainThreadException 异常解决
- android.os.NetworkOnMainThreadException异常如何解决
- AndroidRuntime(1185): 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.os.NetworkOnMainThreadException
- 异常:android.os.NetworkOnMainThreadException
- 异常:android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException异常
- 压缩感知入门
- Linux环境编程之信号(三):一些信号函数
- 4.4 循环语句的效率
- 黑马程序员------毕老师视频笔记第七天------面向对象(继承)
- 手机那些事
- 解决android.os.NetworkOnMainThreadException异常问题
- Android SD卡操作
- LayoutInflate
- hdu2241(二分+合并数组)
- 去掉Win7快捷方式小箭头
- 如何使用适配器的 与ListView、Spinner、GirdView 等组件进行数据绑定
- 2014Astar Problem - 1004 Labyrinth
- [BASIC-7] 特殊的数字
- OC学习笔记之Foundation框架NSString与NSMutableString