为了账号安全,请及时绑定邮箱和手机立即绑定

Android必学-异步加载

难度中级
时长 1小时57分
学习人数
综合评分9.70
220人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.5 逻辑清晰
  • Android异步加载总结
    查看全部
    0 采集 收起 来源:总结

    2016-10-22

  • 1212
    查看全部
  • 将URL转化为Bitmap
    查看全部
  • public Bitmap getBitmapFromUrl(String urlString){ Bitmap bitmap; InputStream is; try { URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); is = new BufferedInputStream(connection.getInputStream()); bitmap = BitmapFactory.decodeStream(is); connection.disconnect(); return bitmap; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { is.close(); } return null; }
    查看全部
    0 采集 收起 来源:LruCache缓存(上)

    2016-10-19

  • visbleitemcount 在初始化调用的时候,他的值为0,这时item还没有加载,所以要讲这个过程跳过,所以在判断第一次加载的时候判断,是否为第一次显示,而且listview的item是否已经画出
    查看全部
  • 通过findviewbytag,通过tag在listview中寻找指定的imageview
    查看全部
    0 采集 收起 来源:图片加载优化

    2016-10-16

  • ListView的加载对于流畅度的要求是很高的,当在异步加载的过程中,在更新UI的时候是在新的线程中进行的,并没有阻塞主线程,但是在加载过之后更新UI线程,会导致UI线程发生一次重绘,如果重绘发生在滚动的时候就会卡顿 ******************************************************* ListView滑动停止后才加载可见项; listview滑动的时候,取消所有加载项
    查看全部
  • LruCache类中的sizeof方法用于获得所存入数据的大小,重写sizeof方法,指定所需的数据的大小,在每次存入缓存之内调用 ******************************************* 创建方法存入cache和取出Cache 通过与Bitmap相连的url返回所存取的BitMap
    查看全部
    0 采集 收起 来源:LruCache缓存(上)

    2016-10-12

  • LRU近期最少使用算法,Android提供了LruCache类来实现这个缓存算法
    查看全部
    0 采集 收起 来源:LruCache缓存(上)

    2016-10-12

  • ImageLoder中对应的方法
    查看全部
  • 对ListView进行滑动监听 滑动的时候停止加载所有的图片,不滑动的时候加载可见的Item的图片 在ImageLoder 新增对应的方法 加载可见项,停止加载
    查看全部
  • http://www.imooc.com/api/teacher?type=4&num=30
    查看全部
    0 采集 收起 来源:AsyncTask分析

    2018-03-22

  • 异步加载的第一层:通过AsyncTask访问网络,获取json或者XML字符串,然后解析他们产生若干object,将每个object放入到ListVIew中(adapter需要使用view holder pattern去写),AsyncTask中的访问网络获取json或者XML字符串,并且产生若干个object的工作就是在doInBackground()方法中进行的,所以这个方法总的来说就是用来准备数据源的。
    查看全部
    0 采集 收起 来源:逻辑梳理

    2016-10-04

  • From @xiaoc024 我来说一下为什么会闪。这是【同时】使用ConvertView和异步机制造成的。一个屏幕一次显示8个item,当第9个item划进屏幕时,ListView对adapter说,返给我一个view,我要显示。adapter调用getView()方法,由于使用了缓存机制,getView()在初始化8个item以后所有返回的view(ConvertView)内存地址都是这8个中的。如果【不使用】异步机制加载图片,那么返回的这个ConvertView是被更新以后返给ListView使用的。效果是上滑屏幕没反应,等了半天,突然加载出来,但是不会闪。 然而这里使用了异步机制,也就是说先返回ConvertView,再等异步线程修改,这是闪的本质!由于教程里使每个异步线程人工阻塞了1s,那么上来有8个异步线程在运行(编号1-8),如果1s之内下滑了ListView比如说下滑了8个,那么新更新的8个item还是用的以前的内存,【并且】又开启了8个异步线程(编号9-16)。因为预先设定了一个默认图片,所以先显示绿色的默认icon图片。然后1-8号异步线程运行完毕,更新ImageView(闪),紧跟着9-16异步线程运行完毕,又更新imageView(闪),最终显示正确结果。这就是下滑时先显示默认图片,再闪一下错误图片,最后闪一下正确图片的本质过程。 如果给每个ImageView设置了tag以后,当1-8号异步线程运行完毕后,会发消息给handler,让他进行更新ui的操作,可是在1-8号线程发消息之前,9-16号线程已经更新了1-8和9-16共用的ImageView控件的tag,所以1-8号线程的消息虽然发给了handler,但是不满足条件,handler不会进行ui更新。 p.s.完全理解这整个过程真的不容易,希望对你们有帮助。 至于说“然而如果不显示ic_lanucher的话,图片依然会错误跳动”其实这个时候图片不是在跳动,而是正在做加载的工作,只是在加载工作完成之前,依然会显示先前加载的图片。 比如1-8加载完成了,我要查看第9个项目,系统就将第1个项目放入缓存,然后加载第9个,然而加载第1个需要时间,系统就会默认地使用最近加入缓存的对象,也就是第1个项目的图片先抗一会,等待第1个项目加载完成接手。 这应该是convertView的小弊端
    查看全部
    7 采集 收起 来源:使用Thread

    2016-10-04

  • 处理加载listview时的 使用了viewhold造成的图片错乱 用setTag来解决 讲解了LruCache方法
    查看全部
    0 采集 收起 来源:LruCache缓存(上)

    2016-09-27

举报

0/150
提交
取消
课程须知
1、了解异步处理的一般方法 2、掌握如何使用多线程进行异步加载 3、掌握如何使用ASyncTask进行异步加载 4、异步加载的缓存与优化
老师告诉你能学到什么?
本课程是Android中级课程 1、熟练掌握基本的Android应用程序开发方法

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!