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

Android必学-异步加载

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

    2015-11-16

  • 实现接口以后不要忘记要注册,否则就白实现了
    查看全部
  • 取消所有加载任务
    查看全部
  • 直接通过URL获取网络数据,返回一个字节流,字符流可以把字节流包裹,buffer又可以把字符流包起来
    查看全部
    0 采集 收起 来源:获取Json数据

    2015-11-16

  • 异步加载——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);
    查看全部
    0 采集 收起 来源:使用Thread

    2015-11-16

  • 在异步加载中,当网络环境不是很好情况下,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是一样的。
    查看全部
    0 采集 收起 来源:使用Thread

    2015-11-16

  • 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进行缓存,避免了网络下载时间不确定导致的持续性的混乱
    查看全部
    0 采集 收起 来源:使用Thread

    2015-11-16

  • 一、如何通过Url获取网络反馈的Json字符串结果: 1、重写doInBackground(Params…) 获取请求的网址,调用自定义方法getJson(String url); 2、自定义方法getJson中定义URL,获取inputStream流 3、自定义方法readStream(InputStream is),将inputStream流中的字节流拼装成字符串; 4、自定义方法getJson调用readeStream()方法,并将InputStream流作为参数传递。这样既可获得json串结果。
    查看全部
    0 采集 收起 来源:获取Json数据

    2015-11-16

  • android 异步加载
    查看全部
  • 解决listview加载图片时卡顿的情况
    查看全部
  • 程序的最后部分在滑动的时候不论本地是否有缓存均显示默认图片,这样在滑动结束后图片会“闪烁”一下才能显示真正的图片,作为一个强迫症受不了,所以稍微修改了适配器getView部分的代码,如下: //如果缓存中已经存在该图片则设置缓存图片否则设置默认图片 Bitmap bitmap = imageLoader.getBitmapFromCache(url); if (bitmap != null) { viewHolder.mIcon.setImageBitmap(bitmap); } else { viewHolder.mIcon.setImageResource(R.mipmap.ic_launcher); }
    查看全部
    1 采集 收起 来源:总结

    2015-11-11

  • 获取网络数据简单粗暴的方式
    查看全部
    0 采集 收起 来源:获取Json数据

    2015-11-08

  • 我的文艺范
    查看全部
  • 我就是一个有情怀的程序员哈哈哈
    查看全部
  • android异步加载
    查看全部

举报

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

微信扫码,参与3人拼团

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

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