开发者

problem loading image from web (android)

开发者 https://www.devze.com 2023-02-03 16:00 出处:网络
public Object fetch(String address) throws MalformedURLException, IOException { URL url = new URL(address);
public Object fetch(String address) throws MalformedURLException,
IOException {
    URL url = new URL(address);
    Object content = url.getContent();
    return content;
}  

private Drawable ImageOperations(Context ctx, String url) {
    try {
        InputStream is = (InputStream) this.fetch(url);
        Drawable d = Drawable.createFromStream(is, "src");
        return d;
    } catch (MalformedURLException e) {
        return null;
    } catch (IOException e) {
        return null;
    }
    catch (Exception e) 
    {
        return null;
 开发者_开发问答   }
}

try {
            Drawable a =ImageOperations(this,"url"); imgView.setImageDrawable(a);
        } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();

This works, but on rare ocasions the app freezes due to a "SocketException: Adress family not supported by protocol". Is there any way to fix this? Thanks


You are trying to Download a File from the UI Thread...(which is why your UI Freezes)

Use a Seperate Thread or AsyncTask so that your UI doesn't Freeze up.

This should solve your problem.


As st0le has pointed out you are trying to do the heavy duty stuff from the UI thread.

All heavy-duty stuff in Android should be done on other worker thread. Because doing it in main thread (or the UI thread) can make your application unresponsive and may be killed as the system is persuaded to think that it has hung.

So you have to do the long running operations in separate thread. For implementing this you can use the concept of Handlers.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号