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完全解析(二)--- 图片 ...
随机推荐
- COM实现过程
前言 COM已经成为一个必需的东西了.在我们周围,可以说处处充满了COM – 如果你是在使用WINDOWS,并在其下面编写程序的话.然而,无论你是用VC,还是使用DELPHI进行COM编程时,在大多数 ...
- 强化一下开源库:Synopse
http://synopse.info/fossil/wiki/Synopse+OpenSource 有空要研究一下,只有写在这里,才会时时刻刻提醒自己.
- hdu 4803 贪心/思维题
http://acm.hdu.edu.cn/showproblem.php?pid=4803 话说C++还卡精度么? G++ AC C++ WA 我自己的贪心策略错了 -- 就是尽量下键,然后上 ...
- Ace of Aces
Description There is a mysterious organization called Time-Space Administrative Bureau (TSAB) in the ...
- Swift中使用typealias定义一个闭包closure
在OC中我们定义一个Blocks是这样定义的: typedef void (^ZWProgressHUDCompletionBlock)(); 在Swift中定义一个闭包是这种: typealias ...
- Swift - 导航条(UINavigationBar)的使用
与导航控制器(UINavigationController)同时实现导航条和页面切换功能不同. 导航条(UINavgationBar)可以单独使用,添加至任何的UIView中.UINavigation ...
- 插件 - 提示窗体(ArtDialog)
效果: 代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default. ...
- VC图形绘制双缓存的代码复用性讨论
在前文中已经讨论了如何实现界面绘制双缓存的问题,前文网址如下: http://www.2cto.com/kf/201111/112429.html 双缓存的主要思路是:先把图形绘制到内存DC中,然后再 ...
- Hadoop 的常用组件一览
Hadoop 集群安装及原理:hdfs命令行操作:Java操作hdfs的常用API接口:动态添加删除数据节点. HBase 集群安装及原理:Hbase命令行操作:Java操作Hbase的常用API接口 ...
- CentOS5.6下安装Oracle10G软件 【保留报错经验】
CentOS5.6下安装Oracle10G ****************************************************************************** ...