本文是对Volley思路的整体整理,并不是Volley教程,建议有Volley使用经验,但是对Volley整体不是很清楚的同学阅读。 我认为,弄清整体的流程很重要,以避免一叶障目不见泰山的囧境,而对于面向对象编程,弄清每个类是干什么的,类与类之间的关系后,就不难搞懂整个流程了。 所以本文不会深入源码 ...
分类:
其他好文 时间:
2016-05-19 21:10:03
阅读次数:
205
本文从实现角度详细讲解了volley框架,读者需要有对基本的volley使用和handler机制有一定的了解,主要目的是研究volley的实现思路,在理解代码的基础上会思考为什么要这么写,很多地方都需要读者先大概地阅读一下贴出的源码。...
分类:
其他好文 时间:
2016-05-18 19:40:04
阅读次数:
195
一、概述
对于加载图片,大家都不陌生,一般为了尽可能避免OOM都会按照如下做法:
对于图片显示:根据需要显示图片控件的大小对图片进行压缩显示。如果图片数量非常多:则会使用LruCache等缓存机制,将所有图片占据的内容维持在一个范围内。
其实对于图片加载还有种情况,就是单个图片非常巨大,并且还不允许压缩。比如显示:世界地图、清明上河图、微博长图等。
那么对于这种需求,该如何做呢?
首...
分类:
移动开发 时间:
2016-05-18 19:27:05
阅读次数:
291
使用Gradle和推荐的工程结构
把密码和敏感数据存放在gradle.properties文件中
使用Jackson或者Gson库来解析JSON数据
不要自己实现HTTP客户端,要使用Volley或者OkHttp库
避免使用Guava, 使用少量的函数库从而避免超出65k方法数限制.
使用Fragments来表示UI界面
Activities只用来管理Fragments
布局XML文件是代码,要组织好它们...
分类:
移动开发 时间:
2016-05-18 19:22:22
阅读次数:
300
上一节,介绍了HurlStack的实现,根据我们外层的代码: 这一节,我将阅读并记录BasicNetwork的实现。 先看BasicNetwork的构造方法。我们在此方法中,传入了HttpStack,这个上一篇已经分析过了。然后我们新建了一个ByteArrayPool传入。我们可以阅读一下ByteA ...
分类:
其他好文 时间:
2016-05-16 01:53:55
阅读次数:
208
前几天心血来潮,打算根据看知乎的API自己做一个小知乎,定制的过程遇到ListView的优化问题及图片未缓存重加载等等许多问题,解决了以后打算和博友分享一下。
接口数据:http://api.kanzhihu.com/getpostanswers/20150925/archive
首先,Json数据太常用,相信每一位开发者Json的解析都是必备的。我们要准备以下知识:
JavaBea...
分类:
移动开发 时间:
2016-05-16 00:21:10
阅读次数:
236
Volley是android官方开发的一个HTTP框架,简化了利用java中原生的HTTP操作API-HttpURLConnection和HttpClient的操作。 一、首先是Volley的简单使用示例: 1 package com.dqxst.first; 2 3 import android. ...
分类:
移动开发 时间:
2016-05-13 20:33:20
阅读次数:
337
安卓中的缓存包括两种情况即内存缓存与磁盘缓存,其中内存缓存主要是使用LruCache这个类,其中内存缓存我在【安卓中的缓存策略系列】安卓缓存策略之内存缓存LruCache中已经进行过详细讲解,如看官还没看过此博客,建议看官先去看一下。
我们知道LruCache可以让我们快速的从内存中获取用户最近使用过的Bitmap,但是我们无法保证最近访问过的Bitmap都能够保存在缓存中,像类似GridVie...
分类:
移动开发 时间:
2016-05-13 15:09:31
阅读次数:
244
我认为在写涉及到数据结构或算法的实现类的源码解析博客时,不应该急于讲它的使用或马上展开对源码的解析,而是要先交待一下这个数据结构或算法的资料,了解它的设计,再从它的设计出发去讲如何实现,最后从实现的角度来讲回源码,才能深入理解。这是最新读了一些博客之后的思考。对此问题如果你有其他见解,欢迎留言交流。
LRU在读LruCache源码之前,我们先来了解一下这里的Lru是什么。LRU全称为Least Re...
分类:
移动开发 时间:
2016-05-13 14:48:34
阅读次数:
236
这是一个来自实际项目的例子,在这个案例中,有同事基于jdk中的LinkedHashMap设计了一个LRUCache,为了提高性能,使用了 ReentrantReadWriteLock 读写锁:写锁对应put()方法,而读锁对应get()方法,期望通过读写锁来实现并发get()。 代码实现如下: [j ...
分类:
其他好文 时间:
2016-05-13 14:37:10
阅读次数:
165