开源项目源码分析/架构分析
有心好书
种一棵树最好的时间是十年前,其次是现在
展开
-
Picasso源码分析
Picasso是Square公司开源的一个Android平台上的图片加载框架,也是大名鼎鼎的JakeWharton的代表作品之一.原创 2016-06-21 20:07:26 · 1055 阅读 · 0 评论 -
glide源码分析
图片加载框架,相对于UniversalImageLoader,Picasso,它还支持video,Gif,SVG格式,支持缩略图请求,旨在打造更好的列表图片滑动体验。Glide有生命周期的概念(主要是对请求进行pause,resume,clear),而且其生命周期与Activity/Fragment的生命周期绑定,支持Volley,OkHttp,并提供了相应的integration libraries,内存方面也更加原创 2016-06-21 20:07:55 · 5050 阅读 · 1 评论 -
volley源码分析
项目介绍 在android开发早期,不像现在这样有各种第三方的网路框架,而网络请求又是app必须的功能,所以不同的公司都会采用自己封装框架的方式,其实主要目的就是可以实现http请求,然后得到想要的结果(json等等),然后还会加入一些扩展的功能:如支持上传下载进度回调、支持对错误的统一处理、支持对数据做内存缓存和文件缓存以及缓存的刷新机制等等。 后来,慢慢的有的知名公司就会选择把自家公司的原创 2016-06-21 20:05:18 · 757 阅读 · 0 评论 -
自己动手写HTTP框架:ThreadPool+Runnable+handler篇
既然异步任务有诸多问题,那么我们可以尝试使用ThreadPoolExecutor+Runnable+Handler来对网络底层进行封装。类图具体流程:首先构造一个请求Request,然后通过这个请求RequestManager可以构造一个NetWorkExecutor,然后从DefaultThreadPool中选择一个线程来执行这个NetWorkExecutor。把结果回调到RequestCallb原创 2016-06-30 22:23:05 · 1742 阅读 · 3 评论 -
自己动手封装图片三级缓存网络请求框架(类似imageloader)
图片三级缓存原理 三级缓存指内存-文件-网络 三层cache机制,其中内存缓存包括强引用缓存和软引用缓存(SoftReference),其实网络不算cache,这里姑且也把它划到缓存的层次结构中。当根据url向网络拉取图片的时候,先从内存中找,如果内存中没有,再从缓存文件中查找,如果缓存文件中也没有,再从网络上通过http请求拉取图片。在键值对(key-value)中,这个图片缓存的key是图片原创 2016-06-21 20:06:08 · 1655 阅读 · 0 评论 -
自己动手写HTTP框架:异步任务篇
需求2011年的某一天,你的公司初进移动开发领域,上司要求你实现一套http网络请求框架,要求易扩展。2011年!!!volley、imageloader、fresco、glide…..都是啥?????需求分析支持http协议get、post、put、delete异步请求请求错误统一处理支持多文件上传预处理服务器返回的数据上传/下载 进度更新取消请求可扩展需求:timeout原创 2016-06-21 20:04:25 · 1554 阅读 · 0 评论 -
MVP架构实践
MVP理论简介为何要在android中引入MVP 在Android项目中,Activity和Fragment占据了大部分的开发工作。而MVP设计模式可以优化Activity和Fragment的代码。 相信很多人阅读代码的时候,都是从Activity开始的,对着一个1000+行代码的Activity,看了都觉得难受。 使用MVP之后,Activity就能瘦身许多了,基本上只有FindView、S原创 2016-07-18 17:01:31 · 3274 阅读 · 0 评论 -
为第三方提供的功能做抽象层封装
对第三方提供的功能做抽象层封装,这样可以极大的降低项目和第三方之间的耦合,出问题的时候或者替换第三方的时候可以比较简单的切换,而不是对着项目中的上千个引用点做替换。比如,电话会议,我们使用云视通、华为等等的电话会议,最好为这些api提供一个抽象层的封装。比如,android底层的网络请求框架,我们用了volley等等,最好对他进行一个抽象层的封装。可扩展、可修改、可替换开闭原则是目的。原创 2016-08-28 17:28:54 · 987 阅读 · 0 评论 -
Fresco源码分析
一.项目介绍Fresco是Facebook提供的一个开源图片加载与管理库。它的功能很强大,可以从网络、本地存储和Android资源文件中加载图片,它完全自己负责图片加载与显示,不需要你为细节去操心。 Fresco含有3级缓存设计(2级内存,1级文件)。Android2.3及以上的系统都可以使用Fresco。在Android5.0以下的系统上,Fresco将图片放在一个特别的内存中(ashmem h转载 2016-08-31 17:39:01 · 2311 阅读 · 0 评论 -
android缓存系列:ASimpleCache源码分析
接触Acache是因为阅读oschina的开源android端代码,发现oschina采用了该框架缓存新闻分页数据。后来知道这是个杨福海的开源项目,他还开源过afinal框架,项目的地址如下:原创 2016-09-11 21:48:04 · 2104 阅读 · 1 评论 -
android缓存系列:DiskLruCache源码分析
disklrucache源码分析#项目介绍 LRU是一种算法,disklrucache基于LRU算法实现的磁盘缓存方案。在很多开源项目中都可以看到它的身影,比如universal imageloader等等。#简单用法(一个demo)首先,这个框架会涉及到一个文件,叫做journal,这个文件中会存储每次读取操作的记录;对于获取一个DiskLruCache,是这样的:原创 2016-09-12 23:28:07 · 2033 阅读 · 0 评论 -
coding源码分析:实现篇
·入口相关splash广告页更换实现侧拉·我的项目模块过滤搜索+号点击弹窗·项目首页模块动态-viewpager动态-动态时间线讨论—讨论的筛选框讨论-返回讨论页面的页面刷新讨论-发送时的全屏dialog文件-上传文件文件-下载文件代码-markdown的支持代码-提交历史的listview效果代码-代码展示解析,且支持放大和缩小·我的任务模块任务过期的红点提示·新建任务模块任务-新建:多种颜色的标原创 2016-09-14 11:05:17 · 1744 阅读 · 0 评论 -
KJFrameForAndroid框架分析
android app一般性架构设计一.UI层(Activity+Fragment基类设计+部分自定义控件)KJActivity(Activity继承链的规范)I_KJActivity,KJFrameActivity接口协议,将Activity需要实现的方法提取成一个接口。I_BroadcastReg,规范Activity中广播接受者注册的接口协议I_SkipActivity,规范Activi原创 2016-07-07 12:18:15 · 1768 阅读 · 0 评论 -
universal imageloader源码分析
项目介绍 android中最让人头疼的莫过于从网络上获取图片、显示、回收,任何一个环节有问题都可能直接OOM。尤其是在列表页,会加载大量网络上的图片,每当快速滑动列表的时候,就会很卡,甚至会因为内存溢出而崩溃。 这个时候就轮到imageloader上场表演了。Imageloader的目的是为了实现异步的网络图片加载、缓存及显示,支持多线程异步加载。 Imageloader的工作原理是这原创 2016-06-21 20:06:52 · 861 阅读 · 0 评论 -
【oschina android源码分析】总结
总结原创 2016-05-21 18:34:34 · 816 阅读 · 0 评论 -
【oschina android源码分析】聊天页面(私信)的设计
一.总结1.如何支持连续的消息发送,并且不会产生线程安全的问题//存放正在发送的消息,key 为生成的一个临时messageID(msgTag),value为Message实体//当消息发送成功后,从mSendingMsgs删除对应的Message实体private SparseArray<MessageDetail> mSendingMsgs = new SparseArray<Message原创 2016-05-21 18:34:06 · 1330 阅读 · 0 评论 -
【oschina android源码分析】便笺系统的设计
便笺原创 2016-05-21 18:33:30 · 765 阅读 · 0 评论 -
【oschina android源码分析】下载更新新版本的设计
一.设置页面点击检查新版本 private void onClickUpdate() { new UpdateManager(getActivity(), true).checkUpdate(); }二.访问网络更新版本 public void checkUpdate() { if (isShow) { showCheck原创 2016-05-21 18:32:48 · 859 阅读 · 0 评论 -
【oschina android源码分析】切换夜间模式的实现
切换夜间模式原创 2016-05-21 18:29:39 · 847 阅读 · 0 评论 -
【oschina android源码分析】页面通知(站内信)的设计-android轮询方案
轮询原创 2016-05-21 18:29:01 · 1526 阅读 · 0 评论 -
【oschina android源码分析】登陆和退出的设计
登陆和退出的设计原创 2016-05-21 18:27:24 · 983 阅读 · 0 评论 -
【oschina android源码分析】缓存的设计
缓存设计原创 2016-05-18 17:06:49 · 955 阅读 · 0 评论 -
SimpleNet网络框架源码分析
项目介绍 SimpleNet是何红辉开源的一个http网络请求库。该库借鉴了volley的实现思路,但为了更易于理解,裁掉了一些模块。整体适合学习http网络框架原理使用,难易度恰到好处。在此基础上再去读volley源码,会体悟更深刻一些。特点支持httpclient、httpurlconnection两种方式 支持成功的回调请求: 支持多种格式的请求:Json、String、小文件 支持多原创 2016-06-27 16:37:42 · 4148 阅读 · 0 评论 -
第三方图片加载框架对比分析
glideGoogle推荐的图片加载库,专注于流畅的滚动。1.优点 1)使用RGB_565,内存占用比Picasso小一半。 2)图片展示和页面的生命周期一致(对context有类型要求) 3)相比Picasso,Glide在缓存策略和加载GIF方面略胜一筹 减少了缓存文件的大小 Picasso和Glide在磁盘缓存策略上有很大的不同。Picasso缓存的是全尺寸的,而Glide缓存的是跟原创 2016-02-18 21:32:35 · 2927 阅读 · 0 评论 -
android网络框架一般性原理分析
这里归纳写一个android网络框架的一般性原理:Http网络请求原理 学过《计算机网络》的应该都知道http是一种应用层协议,它通过tcp实现了可靠的数据传输,能够保证数据的完整性、正确性,而tcp对于数据传输控制的优点也能够体现在http上,使得http的数据传输吞吐量、效率得到保证。 对于移动开发来说,网络应用基本上都是C/S架构,也就是客户端/服务器架构。客户端通过向服务器发起特定的请求原创 2016-07-01 14:46:00 · 1861 阅读 · 0 评论 -
coding源码分析:架构篇(待再更新)
一.概述这篇文章主要针对coding android项目的开源代码。这个项目是深圳的一个公司的开源项目,属于工业级别代码,功能非常完备,代码质量比较高。对我启发比较大:包括基类的设计、网络请求的设计、红点更新的设计、即时通讯的实现方案、缓存的设计等等,很值得阅读和学习。即时通讯它采用的轮询的方式,这种方式虽然比较耗费流量和电量,但是因为它只在聊天页面做轮询,离开这个页面,就会停止轮询,所以也不会耗费原创 2016-09-14 11:04:17 · 1462 阅读 · 0 评论