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

Android必学-异步加载

难度中级
时长 1小时57分
学习人数
综合评分9.70
220人评价 查看评价
9.9 内容实用
9.7 简洁易懂
9.5 逻辑清晰
  • 我们发现异步加载出现图片错位的情况,图片的排列顺序有问题。 图片显示错位的原因:ListView自身的缓存机制。正确的ListView没有显示正确的URL。 解决办法:在适配器中给每一个图片设置一个标识Tag,Tag本身就是图片对应的url,也就是将图片和 url 进行了绑定。 如图,只有当Tag等于图片自身的url的时候才加载图片,否则保持原样。避免了缓存图片对正确图片的影响。
    查看全部
    0 采集 收起 来源:使用Thread

    2017-03-21

  • 在子线程中将Bitmap以message的形式发送出去: Bitmap bitmap = getBitmapFromURL(url);//从 url中获取 bitmap。 Message message = Message.obtain();//此方法使用现有的、已回收的Message,提高Message的使用效率。 message.obj = bitmap;//将信息的内容(obj)设置为 bitmap。 handler.sendMessage(message);//调用Handler将载有bitmap的Message发送出去。 注意这里的 Handler 要选择android.os.Handler的。
    查看全部
    0 采集 收起 来源:使用Thread

    2017-03-21

  • 将图片的地址 urlString 转变为 Bitmap。 基本上和网络相关的操作都需要捕捉异常。 1. 将 urlString(字符串类型)转变为 URL 类型对象url。 2. 通过 url 获取连接对象 connection。方法:url.openConnection()。 3. 通过连接对象获得输入流,并用BufferedInputStream包装: is = new BufferedInputStream(connection.getInputStream()); 4. 将输入流解析为Bitmap:bitmap = BitmapFactory.decodeStream(is); 5. 释放资源:connection.disconnect(); is.close();
    查看全部
  • 逻辑梳理: 首先在 onCreate()方法中通过 new NewsAsyncTask().execute(URL) 将一个URL传递进去,实现对这个URL的异步访问。URL传递给方法 getJsonData(),通过该方法将URL对应的Json格式数据转化为我们所封装的NewsBean对象。获得的NewsBean对象在 onPostExecute()方法中传递给自定义的适配器 NewsAdapter,通过NewsAdapter构造了一个ListView的数据源,并将数据源加载给了ListView。从而让ListView显示我们想要的数据。
    查看全部
    0 采集 收起 来源:逻辑梳理

    2017-03-21

  • 最后在 onPostExecute()方法中将生成的 newsBean添加到 mListView:通过适配器加载: NewsAdapter adapter = new NewsAdapter(MainActivity.this,newsBeen); mListView.setAdapter(adapter);
    查看全部
  • getView()的重写 1. 采取文艺式,在getView()之外创建一个内部类 ViewHolder 封装 Item 的三个控件。 2. 在getView()中定义ViewHolder对象 viewHolder。 3. 重点: (1)判断 convertView是否为空,为空则初始化 viewHolder,使用 LayoutInflate的 inflate()方法将布局文件转换为View对象赋值给 convertView。用过 convertView 的findViewById()方法初始化 viewHolder 的三个控件。最后别忘了建立起 convertView和 viewHolder 的关系:convertView.setTag(viewHolder); 如果 convertView 不为空,则取出 ViewHolder:viewHolder = (ViewHolder) convertView.getTag(); (2)给viewHolder的三个控件赋值,这里的图片先设置默认图标,真正的图标将在异步加载中实现。 (3)返回 convertView。
    查看全部
  • 将JSON格式数据转变为 NewsBean对象,添加到List。 1. 获得 Json 的Object对象:jsonObject = new JSONObject(jsonString); 2. 获得 Json 数组(数组名叫data):JSONArray jsonArray = jsonObject.getJSONArray("data"); 3. 使用for循环,遍历这个数组,将数组的每一个元素都转变为 NewsBean对象,然后将NewsBean对象添加到 List。
    查看全部
  • 格式转换:将 JSON 字符串转换为我们想要的数据。这里仅仅先实现字符串的获取。其中 Log.d("xys",jsonString)是把json字符串以日志的形式打印出来。 InputStream is由 new URL(url).openStream()获得。此句功能与url.openConnection.getInputStream()相同,可根据URL直接联网获取网络数据,简单粗暴!返回值类型为InputStream。 另外,不要忘记在配置文件中添加网络权限:<uses-permission android:name="android.permission.INTERNET"></uses>
    查看全部
    0 采集 收起 来源:获取Json数据

    2018-03-22

  • 通过inputStream读取网页信息。 我们定义一个方法用于读取输入流: public String readStream(InputStream is){ InputStreamReader isr; String result=""; try { String line=""; isr = new InputStreamReader(is,"utf-8"); BufferedReader br = new BufferedReader(isr); while((line = br.readLine())!=null){ result += line; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } 其中,传进参数InputStream is 是字节流,InputStreamReader(is,"utf-8")将字节流转化为字符流,再通过BufferedReader封装,以BufferedReader形式读取出来,最终拼接到字符串result里面。这样就完成了整个数据的读取。 既然读取了JSON字符串,接下来把它转换为我们想要的数据。
    查看全部
    0 采集 收起 来源:获取Json数据

    2018-03-22

  • http://www.imooc.com/api/teacher?type=4&num=30上面的JSON数据便是我们所要异步加载的数据。 要点: 1. 获取JSON格式数据,再把JSON格式的数据转化成我们所需要的数据,加载到 ListView 里面。 2. 创建新的类NewsBean,用于封装JSON格式的数据。每一个NewsBean都代表一行数据。在doInBackground()中的第三个参数便设置为List<NewsBean>,接下来List<NewsBean>会传到adapter(适配器)中,最后加载给ListView,就可以在界面上显示出JSON数据所代表的内容信息。 3. 在AsyncTask的 doInBackground() 中获取到传递进来的URL,也就是JSON数据所在的网址。通过API返回JSON格式的数据,并由此构造出由NewsBean组成的List。
    查看全部
    1 采集 收起 来源:AsyncTask分析

    2018-03-22

  • 本节主要是Item布局的编程,还有主界面的编程。 主界面就是一个Listview,主要在于 item_layout.xml 的编写。 在TextViwe中设置最大行数是为了防止在文字过多的情况下出现变形。
    查看全部
    0 采集 收起 来源:创建布局

    2017-03-20

  • Android异步加载 异步加载:用异步的方式加载数据,原因无非两个:1.提高用户体验,用户在加载数据的时候不会感觉到明显的卡顿;2.安卓的要求。 异步加载最常用的两种方式:多线程\线程池;AsyncTask。 其中AsyncTask的底层也是通过线程池实现,所以二者异曲同工。
    查看全部
  • 获取json数据
    查看全部
    0 采集 收起 来源:获取Json数据

    2017-03-20

  • Cache可以认为是一个Map
    查看全部
    0 采集 收起 来源:LruCache缓存(下)

    2017-03-09

  • sizeOf在每次加入内存缓存的时候进行调用
    查看全部
    0 采集 收起 来源:LruCache缓存(上)

    2017-03-09

举报

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

微信扫码,参与3人拼团

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

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