使用FinalBitMap加载图片,url错误加载其他url解决办法

最近在解决一个当网络环境不好时图片加载缓慢的问题,想法就是先访问本地的服务器获取图片如果不成功再访问远程服务器。ps:访问本地服务器的速度很快,而且几乎不受到网络环境的影响。我是用快速开发框架FinalBitMap来实现图片的加载,怎么实现很easy这里就不做解释了,只用传一个imageView和一个url就可以实现图片的加载。但问题也出在这里,Afinal框架并没有图片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);           
        }
    };

这样根据服务器的状态就可以实现上面的效果。



你可能感兴趣的:(FinalBitMap,URL错误,图片加载失败,Android)