Take the 2-minute tour ×
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

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

share|improve this question
add comment

2 Answers

up vote 0 down vote accepted

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.

share|improve this answer
Ok, Ive tried with the first answer in this thread: stackoverflow.com/questions/3090650/…, but the "DownloadImageTask"-part of "new DownloadImageTask.execute(mChart);" gets red in eclipse, even though the class is created. Did i miss something? –  Johan Jan 12 '11 at 12:45
Oh never mind, missed "()" after the class. –  Johan Jan 12 '11 at 12:58
add comment

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.

share|improve this answer
add comment

Your Answer


