使用FinalBitMap加载图片,url错误加载其他url解决办法
2015-09-24 11:07
399 查看
最近在解决一个当网络环境不好时图片加载缓慢的问题,想法就是先访问本地的服务器获取图片如果不成功再访问远程服务器。ps:访问本地服务器的速度很快,而且几乎不受到网络环境的影响。我是用快速开发框架FinalBitMap来实现图片的加载,怎么实现很easy这里就不做解释了,只用传一个imageView和一个url就可以实现图片的加载。但问题也出在这里,Afinal框架并没有图片url错误,图片加载错误的回调。所以这里必须自己想办法。
先谈谈自己的思路,后面附上代码。核心就是判断第一个url是否可以连接,然后再做对应处理。
1、判断url是否可用
2、启动检查服务器是否可连接根据返回的url是否可用的信息,load不同的url
这样根据服务器的状态就可以实现上面的效果。
先谈谈自己的思路,后面附上代码。核心就是判断第一个url是否可以连接,然后再做对应处理。
1、判断url是否可用
public boolean checkURL(String url) { boolean value = false; try { HttpURLConnection conn = (HttpURLConnection) new URL(url) .openConnection(); conn.setConnectTimeout(100); int code = conn.getResponseCode(); if (code != 200) { value = false; } else { value = true; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return value; } return value; }ps:这里需要注意的是要自己设置超时时间,不然他会一直连接本地服务器知道默认超时为止
2、启动检查服务器是否可连接根据返回的url是否可用的信息,load不同的url
new Thread(new Runnable() { @Override public void run() { String fasong_img = null; // TODO Auto-generated method stub if (checkURL(img_2)) { fasong_img = img_2; } else { fasong_img = imageUrl; } Message msg = new Message(); msg.obj = fasong_img; handler1.sendMessage(msg); } }).start();3、收到消息处理
Handler handler1 = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); String m_img = (Xinxi) msg.obj; fb.display(imgeview, m_img); } };
这样根据服务器的状态就可以实现上面的效果。
相关文章推荐
- URAL 1263 Elections
- 远程视频完善医疗体制
- Arduino 试用 Digispark Attiny85
- HttpClient多线程调用并返回值
- dom访问节点
- Lowest Common Ancestor of a Binary Tree 二叉树的公共祖先
- 中秋将至
- 爱快云微信连wifi3.1用户前期准备工作
- 使用Nopcommerce为商城添加满XX减XX优惠券功能
- sparksql性能测试
- Vim命令合集
- android刷新媒体库
- IO多路复用机制详解
- Java第一步
- 浅析APP安全现状,爱加密为APP提供加固方案!
- Ubuntu 挂载ISO文件
- Unity Attribute的使用总结
- 设计模式学习笔记(二)代理模式
- 事务内执行sql修复的简易模板
- 09.24.函数多个返回值