这一章会介绍一些基本的网络操作,监视网络链接(包括网络改变),让用户来控制app对网络的选择使用。还会介绍如何解析与使用XML数据。
通过学习这章节的课程,你已经会学习一些基础知识,如何在最小化网络阻塞的情况下,创建一个高效的app,用来下载数据与解析数据。
你还可以参考下面文章进阶学习:
这一章会介绍一些基本的网络操作,监视网络链接(包括网络改变),让用户来控制app对网络的选择使用。还会介绍如何解析与使用XML数据。
通过学习这章节的课程,你已经会学习一些基础知识,如何在最小化网络阻塞的情况下,创建一个高效的app,用来下载数据与解析数据。
你还可以参考下面文章进阶学习:
这一课会演示如何运用前面几节课的内容,使用后台线程与Cache机制来加载图片到 ViewPager 与 GridView 组件,并且学习处理并发与配置改变问题。(并发问题的处理确实需要好好考虑,大多数App都没有仔细考虑到这个问题,会导致浪费更多的资源,效率不够)
加载单个Bitmap到UI是简单直接的,但是如果你需要一次加载大量的图片,事情则会变得复杂起来。在大多数情况下(例如在ListView,GridView or ViewPager), 显示图片的数量通常是没有限制的。
通过循环利用子视图可以抑制内存的使用,GC(garbage collector)也会释放那些不再需要使用的bitmap。这些机制都非常好,但是为了保持一个流畅的用户体验,你想要在屏幕滑回来时避免每次重复处理那些图片。内存与磁盘缓存通常可以起到帮助的作用,允许组件快速的重新加载那些处理过的图片。
这一课会介绍在加载多张位图时使用内存Cache与磁盘Cache来提高反应速度与UI的流畅度。
在上一课中有介绍一系列的BitmapFactory.decode* 方法,当数据源是网络或者是磁盘时(或者是任何实际源不在内存的),这些方法都不应该在main UI 线程中执行。那些情况下加载数据是不可以预知的,它依赖于许多因素(从网络或者硬盘读取数据的速度, 图片的大小, CPU的速度, etc.)。如果其中任何一个任务卡住了UI thread, 系统会出现ANR的错误。
这一节课会介绍如何使用 AsyncTask 在后台线程中处理bitmap并且演示了如何处理并发(concurrency)的问题。