从web加载图像时出现问题(android)
这是可行的,但在少数情况下,由于“SocketException:Address系列不受协议支持”,应用程序会冻结。有办法解决这个问题吗?谢谢您正试图从UI线程下载文件…(这就是您的UI冻结的原因) 使用一个单独的线程,这样你的UI就不会冻结从web加载图像时出现问题(android),android,image,url,Android,Image,Url,这是可行的,但在少数情况下,由于“SocketException:Address系列不受协议支持”,应用程序会冻结。有办法解决这个问题吗?谢谢您正试图从UI线程下载文件…(这就是您的UI冻结的原因) 使用一个单独的线程,这样你的UI就不会冻结 这应该可以解决您的问题。正如st0le所指出的,您正在尝试从UI线程执行繁重的任务 Android中的所有重负荷工作都应该在其他工作线程上完成。因为在主线程(或UI线程)中执行此操作可能会使应用程序无响应,并且可能会被终止,因为系统被说服认为它已挂起 因此
这应该可以解决您的问题。正如st0le所指出的,您正在尝试从UI线程执行繁重的任务 Android中的所有重负荷工作都应该在其他
工作线程上完成。因为在主线程
(或UI线程)中执行此操作可能会使应用程序无响应,并且可能会被终止,因为系统被说服认为它已挂起
因此,您必须在单独的线程中执行长时间运行的操作。为了实现这一点,您可以使用。Ok,我尝试了这个线程中的第一个答案:,但是“DownloadImageTask”的一部分“new DownloadImageTask.execute(mChart);”在eclipse中变为红色,即使创建了类。我错过什么了吗?
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();