-
在异步加载中我们通常使用两种方式去避免ListView的缓存这样一个特性所造成的的一个item的错乱的现象:一是通过在BaseAdapter中去设置一个对应的Tag,将身份认证信息与相应的item进行绑定,而在真正加载的时候去判断身份认真信息是否正确,只有正确的情况下才会去进行操作。二是使用成员变量将对应的数据进行缓存从而避免由于网络下载时间的不确定所导致的时序上的混乱,这种方式与BaseAdapter中使用ViewHolder这样的一个方式去缓存View的方式是一样的。我们通过成员变量将每次调用所传递的那些方法的一个具体的View或者是参数缓存起来从而避免时序上的顺序错误查看全部
-
在showImageByThread方法中不能将获得Bitmap对象直接让ImageView组件获得,因为非主线程不能直接操作UI控件查看全部
-
此处是笔记查看全部
-
终于系统的学习了关于listview的加载及优化,图片的缓存和异步加载,多线程的使用,收获很多。查看全部
-
return之后内部资源为空?,你忘记了一点,ListView有其自己的缓存机制,+通过下面这个个方法可以的几个参数可以从缓存中取缓存的+convertView,也就是虽然return了,但是缓存中还有东西,至于setTag方法,View函数作为所有显示控件的父类它具有这个方法查看全部
-
异步加载查看全部
-
使用“LruCache”缓存机制 案例:使用缓存机制存储加载的图片 1.定义变量 private static LruCache<String, Bitmap> mLruCache; 两个泛型,以键值对方式进行存储缓存。 2.实例化该变量。并且申请内存 long maxSize=Runtime.getRuntime().maxMemory();//获取最大内存 long cacheSize=maxSize/4;//申请最大内存的1/4作为缓存的最大内存。 mLruCache=new LruCache<String, Bitmap>((int) cacheSize) { @Override protected int sizeOf(String key, Bitmap value) { //重写sizeOf方法 //该方法会在每次执行put时调用,用于获取存入值的内存大小。 return value.getByteCount(); } }; 2.1 其中,sizeOf方法必须重写。 3.使用put方法。将缓存数据放入mLruCache变量中。 mLruCache.put(urlStr, bitmap); 4.使用get方法,从缓存mLruCache变量中获取缓存数据。 mLruCache.get(urlStr);查看全部
-
new URL(url).openStream()等同于url.openConnection().getInputStream()查看全部
-
正式使用的时候用的是recyclerview,而且是fragment。不明原因加载不正确,刷新之后也不正确查看全部
-
new URL(url).openStream()等同于url.openConnection().getInputStream()查看全部
-
异步加载顺序错误查看全部
-
本项目源码 http://www.imooc.com/article/15928查看全部
-
第一次查看全部
-
预加载 异步加载避免阻塞UI线程 通过LruCache,将已下载图片放到内存闹钟 通过判断ListView滑动状态,决定何时加载图片查看全部
-
滚动状态监听 当listView初始化的时候没有被调用 加一个boolean初始化的时候第一次启动OnScrol中是第一次启动可见条目当前列表是第一次显示人为的显示第一次显示之后调用滚动完成之后当LisView滑动的时候不会有任何的卡顿执行效率达到坐高查看全部
举报
0/150
提交
取消