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 inmain 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.