Android开源client之LookAround学习(一)Application & 网络框架
之前看过开源clientLookAround(下载地址:http://download.csdn.net/detail/hualulove/7306807),链接:http://blog.csdn.net/lancees.
对其源代码的分析分析例如以下。
1 LookAround Application
自己定义Application。用于全局都用到的变量或者全局都进行的处理。LookAround的自己定义Application,保存了登录状态、登录后的数据、软件是否更新等全局变量,做了第三方统计工具友盟还有ShareSDK的事情。
2 LookAroundclient网络请求框架:
用户界面得到请求的对象,进行数据打包,通常是将对象转变为JSON格式,同一时候传入回调处理接口。网络层通过HttpClient向server发送请求,一般为异步请求。请求返回后,将返回的JSON数据转化为对象,最后回调之前传入的处理接口,用户界面得到请求结果返回。
LookAround的Http Client使用的是开源库android-anyc-http.jar,Http Client为AsyncHttpClient。AsyncHttpClient这里要求传入的參数不是JSON数据,而是类RequestParams,RequestParams的创建函数为:RequestParams(Map<String, String> source)
这里以登录包处理为例,例如以下:
public
static class
UserLogin extendsAbstractBaseProtocol {
public
final static String KEY_CONN ="conn";
public
final static String KEY_MODEL ="model";
public
final static String KEY_TELCO ="telco";
public
final static String KEY_OSVER ="osver";
public
final static String KEY_VER ="versioncode";
public String
mConn = "";
public String
mModel = "";
public String
mTelco = "";
public String
mOsver = "";
public String
mVer = "";
@Override
publicMap<String, String> toStringMap() {
super.toStringMap();
mapValue.put(KEY_CONN,mConn);
mapValue.put(KEY_MODEL,mModel);
mapValue.put(KEY_TELCO,mTelco);
mapValue.put(KEY_OSVER,mOsver);
mapValue.put(KEY_VER,mVer);
return
mapValue;
}
}
当中AbstractBaseProtocol为自己定义的基本协议头抽象类,其定义例如以下:
public
abstract class
AbstractBaseProtocol implementsIToStringMap{
public Map<String,String>mapValue =newHashMap<String, String>();
public
final static String KEY_KEYS ="keys";
public
final static String KEY_TIMESTAMP ="timestamp";
public
final static String KEY_SIGN ="sign";
public
final static String KEY_STD ="std";
public String
mKeys = "";
public String
mTimeStamp = "";
public String
mSign = "";
public String
mStd = "";
@Override
public Map<String,String> toStringMap() {
mapValue.put(KEY_KEYS,mKeys);
mapValue.put(KEY_TIMESTAMP,mTimeStamp);
mapValue.put(KEY_SIGN,mSign);
mapValue.put(KEY_STD,mStd);
return
mapValue;
}
}
在构造RequestParams时,使用UserLogin实例toStringMap()就可以,例如以下:
RequestParams param =new RequestParams(mUserLogin.toStringMap());
LookAround创建了一个ClientEngine的类,用于连接处理用户请求和网络层。解析返回的JSON数据是,使用的是Android自带的org.json.*包下JSON相关类。具体的可见源代码。整体来说,框架比較清晰。
Android开源client之LookAround学习(一)Application & 网络框架的更多相关文章
- Android开源项目SlidingMenu本学习笔记(两)
我们已经出台SlidingMenu使用:Android开源项目SlidingMenu本学习笔记(一个),接下来再深入学习下.依据滑出项的Menu切换到相应的页面 文件夹结构: watermark/2/ ...
- Android开源项目分包方式学习(eoe、oschina、github)
总感觉Android中关于分包的文章很少,或者几乎可以说没有.但是合理地分包,又可以使整个项目模块化,减少包与包之间的依赖,让整个项目的框架更加清晰,更利于后续功能的拓展. 因为没有相关的文章,所以这 ...
- Android开源项目SlidingMenu的学习笔记(一)
SlidingMenu是眼下在应用程序上非常流行的一种UI技术.能够实现一种比較炫的滑动效果,SlidingMenu是Git上托管的一个项目,开源免费的.SlidingMenu作为一个Library的 ...
- Android开源地图项目 BigPlanetTracks 学习随笔
一. app主体部分 [tyt.android.bigplanettracks] 二. 地图部分 [tyt.android.bigplanettracks.maps] ...
- Android开源项目 Universal imageloader 源码研究之项目框架
Universal imageloader 的代码并不复杂 重点是缓存,线程池任务 下面都用UML图进行了绘制 基本使用流程就是 初始化配置,设置Options参数,最后Dispaly提交下载 pub ...
- android开源项目学习
FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb.ePub和fb2.此外还支持直接读取zip.tar和gzip等压缩文档. 项目地址:ht ...
- Android 开源项目及其学习
Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...
- 开源:矿Android新闻client,快、小、支持离线阅读、操作简单、内容丰富,形式多样展示、的信息量、全功能 等待(离开码邮箱)
分享:矿Android新闻client.快.小.支持离线阅读.操作简单.内容丰富,形式多样展示.的信息量.全功能 等待(离开码邮箱) 历时30天我为了开发这个新闻clientAPP,下面简称觅闻 ht ...
- Android 开源框架Universal-Image-Loader学习
Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二)--- 图片 ...
随机推荐
- java.exe路径问题
因为要更换JDK版本,自然也就要重新设置JAVA_HOME环境变量,但设置完成后奇怪的发现,运行java -version时还是原来的版本,莫名其妙,最后我把JAVA_HOME环境变量删除竟然java ...
- QT工程pro设置实践(with QtCreator)----非弄的像VS一样才顺手?
源地址:http://my.oschina.net/jinzei/blog/100989?fromerr=DhQJzZQe 相信大家很多和我一样,用多了微软给的便利,用人家的就十分不习惯.于是就琢磨原 ...
- Mac上利用Eclipse编译Cocos2d-x
目前使用较多的Cocos2d-x开发平台是XCode,应该是由于大部分Cocos2d-x开发者都是iOS开发出生.但是当我们将XCode开发的Cocos2d-x工程发布Android版本时,每次都需要 ...
- Cocos2d-x 手游聊天系统需求分析
手游聊天系统需求分析 转载请注明:IT_xiao小巫 移动开发狂热者群:299402133 策划需求图 參考系统:刀塔传奇 点击这个.然后弹出以下的对话框 游戏类型:卡牌 分析:刀塔传奇聊天系统分为3 ...
- HDU1027 Ignatius and the Princess II 【next_permutation】【DFS】
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- python 下载整个站点
用python实现的下载整个站点工具. 核心流程非常easy: 1. 输入站点地址 2. url.得到响应的内容. 3. 依据响应的http报文头,假设类型为html, 则从第4步開始运行. 假设是其 ...
- 优化Java堆大小5温馨提示
总结:Java没有足够的堆大小可能会导致性能非常大的影响,这无疑将给予必要的程序,并不能带来麻烦.本文总结了影响Java居前五位的能力不足,并整齐地叠优化? 笔者Pierre有一个10高级系统架构师有 ...
- Hibernate持久化对象状态
在Hibernate中,持久化对象再被操作过程中分为三个时期.这三个时期和session周期相关. 各自是瞬时(Transient),持久太(persistent)和游离态(Detached) 瞬时状 ...
- 由于“Table(T_Test)”没有主键,因此无法在其上执行 Create、Update 或 Delete 操作
在使用Linq To Sql查询的时候,遇到这么个问题,如图所示: 出现这个问题的原因就像途中所说的——没有主键(现在终于初步知道“为什么别人常说数据库中的逻辑主键是为了在编程中方便使用”的原因了,估 ...
- [置顶] Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作
SQLite 是一个轻量级的免费关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,可以在(http://www.sqlite.org ...