android - http 加载图片 (深刻理解安卓中的多线程) imageview
访问量: 2147
https://android-developers.googleblog.com/2009/05/painless-threading.html 把android中的post, handler 等等讲的非常透彻
这里也是一个很著名的问答: https://stackoverflow.com/questions/6343166/how-do-i-fix-android-os-networkonmainthreadexception
也就是说,如果要异步加载图片的话,就这样:
// 创建一个新的线程(从UI线程分离) new Thread(new Runnable() { @Override public void run() { try{ String url = item.getImage_url(); Log.d(TAG, "== imageUrl: " + url); InputStream inputStream = (InputStream) new URL(url).getContent(); final Drawable drawable = Drawable.createFromStream(inputStream, "src name"); // 该线程的结果,再返回,操作UI线程 holder.ivIcon.post(new Runnable() { @Override public void run() { holder.ivIcon.setImageDrawable(drawable); } }); }catch (Exception e){ e.printStackTrace(); } } }).start();
没办法,从android 4.0 开始就是这样的。
所以,如果要async的方式加载图片的话,建议使用这个库:https://github.com/nostra13/Android-Universal-Image-Loader