problem loading image from web (android)

2019-08-18 02:37发布

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

2条回答
不美不萌又怎样
2楼-- · 2019-08-18 02:48

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.

查看更多
相关推荐>>
3楼-- · 2019-08-18 02:53

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.

查看更多
登录 后发表回答