-
优化异步加载要点查看全部
-
实现接口以后不要忘记要注册,否则就白实现了查看全部
-
取消所有加载任务查看全部
-
直接通过URL获取网络数据,返回一个字节流,字符流可以把字节流包裹,buffer又可以把字符流包起来查看全部
-
异步加载——Thread方式 1. 将url转换成Bitmap 通过InputStream,调用BitmapFactory.decodeStream()方法将url String转换成一个bitmap并返回。 public Bitmap getBitmapFromURL(String urlString) { Bitmap bitmap; InputStream is = null; try { URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); is = new BufferedInputStream(connection.getInputStream()); //从urlString中获取InputStream bitmap = BitmapFactory.decodeStream(is); //通过decodeStream获取bitmap return bitmap; } 2. 从getBitmapFromURL()获得的bitmap对象是不能直接设置给ImageView的 按照android单线程模型,非主线程是不能在此线程中直接更新UI的,可以通过一个Handler来传递带有bitmap的消息给主线程,让主线程的handler更新UI。 如图: (1)开辟一个线程,在线程中将url转换成bitmap (2)通过sendMessage()以消息的形式将bitmap发送给主线程的Handler (3)在Handler中设置bitmap给ImageView 3. 为了保证ListView每行数据中的ImageView能够正确显示,在Adapter的getView()方法中为每个ImageView设置一个tag String urlString = newsBean.imageUrl; viewHolder.imageView.setTag(urlString); 主线程的Handler中更新UI时,会判断这个tag,是否是对应的。 if(mImageView.getTag().equals(urlString)) mImageView.setImageBitmap((Bitmap) msg.obj);查看全部
-
在异步加载中,当网络环境不是很好情况下,ListView本身的缓冲机制可能会造成ListView的item显示错乱。 两种方法可以避免这种问题: 1. 将当前的item与原始数据绑定 例如上一笔记中,在Adapter的getView()方法中为每个ImageView设置一个url的tag String urlString = newsBean.imageUrl; viewHolder.imageView.setTag(urlString); 在主线程的Handler中真正加载进行更新UI时,会判断这个tag是否是对应的。只有当tag是正确时才会真正做设置item的操作 if(mImageView.getTag().equals(urlString)) mImageView.setImageBitmap((Bitmap) msg.obj); 2. 使用成员变量将对应的数据进行缓存,这种方式就相当于BaseAdapter中使用ViewHolder是一样的。查看全部
-
Bitmap-刷新ListView加载: 问题是解决:缓存的图片对正确的图片加载时的影响~ 问题描述:图片在刷新显示的时候会刷新更改多次,并不是一次到位加载正确图片。 问题分析:ListView会重用convertView,每一个ImageView并没有唯一的标识,多个LIstView中Item的加载在缓冲池中产生多个ImageView,在没有Tag的情况下,重用convertView就会导致新的图片在加载之前先显示旧的图片,根本原因是ListView中特定的Item没有显示正确的URL资源 解决方案:方法1-设置Tag:在首次加载时就为ImageView的标签,标签为正确的URL(身份验证信息):viewHolder.imageView.setTag(url),在handler中加载图片时对标签进行判断,若符合,则加载。 方法2-设置成员变量:在showImageByThread中仿照ImageView的方式对URL进行缓存,避免了网络下载时间不确定导致的持续性的混乱查看全部
-
一、如何通过Url获取网络反馈的Json字符串结果: 1、重写doInBackground(Params…) 获取请求的网址,调用自定义方法getJson(String url); 2、自定义方法getJson中定义URL,获取inputStream流 3、自定义方法readStream(InputStream is),将inputStream流中的字节流拼装成字符串; 4、自定义方法getJson调用readeStream()方法,并将InputStream流作为参数传递。这样既可获得json串结果。查看全部
-
android 异步加载查看全部
-
解决listview加载图片时卡顿的情况查看全部
-
程序的最后部分在滑动的时候不论本地是否有缓存均显示默认图片,这样在滑动结束后图片会“闪烁”一下才能显示真正的图片,作为一个强迫症受不了,所以稍微修改了适配器getView部分的代码,如下: //如果缓存中已经存在该图片则设置缓存图片否则设置默认图片 Bitmap bitmap = imageLoader.getBitmapFromCache(url); if (bitmap != null) { viewHolder.mIcon.setImageBitmap(bitmap); } else { viewHolder.mIcon.setImageResource(R.mipmap.ic_launcher); }查看全部
-
获取网络数据简单粗暴的方式查看全部
-
我的文艺范查看全部
-
我就是一个有情怀的程序员哈哈哈查看全部
-
android异步加载查看全部
举报
0/150
提交
取消