之前看过开源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 &amp; 网络框架的更多相关文章

  1. Android开源项目SlidingMenu本学习笔记(两)

    我们已经出台SlidingMenu使用:Android开源项目SlidingMenu本学习笔记(一个),接下来再深入学习下.依据滑出项的Menu切换到相应的页面 文件夹结构: watermark/2/ ...

  2. Android开源项目分包方式学习(eoe、oschina、github)

    总感觉Android中关于分包的文章很少,或者几乎可以说没有.但是合理地分包,又可以使整个项目模块化,减少包与包之间的依赖,让整个项目的框架更加清晰,更利于后续功能的拓展. 因为没有相关的文章,所以这 ...

  3. Android开源项目SlidingMenu的学习笔记(一)

    SlidingMenu是眼下在应用程序上非常流行的一种UI技术.能够实现一种比較炫的滑动效果,SlidingMenu是Git上托管的一个项目,开源免费的.SlidingMenu作为一个Library的 ...

  4. Android开源地图项目 BigPlanetTracks 学习随笔

    一.         app主体部分 [tyt.android.bigplanettracks] 二.         地图部分 [tyt.android.bigplanettracks.maps] ...

  5. Android开源项目 Universal imageloader 源码研究之项目框架

    Universal imageloader 的代码并不复杂 重点是缓存,线程池任务 下面都用UML图进行了绘制 基本使用流程就是 初始化配置,设置Options参数,最后Dispaly提交下载 pub ...

  6. android开源项目学习

    FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb.ePub和fb2.此外还支持直接读取zip.tar和gzip等压缩文档. 项目地址:ht ...

  7. Android 开源项目及其学习

    Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...

  8. 开源:矿Android新闻client,快、小、支持离线阅读、操作简单、内容丰富,形式多样展示、的信息量、全功能 等待(离开码邮箱)

    分享:矿Android新闻client.快.小.支持离线阅读.操作简单.内容丰富,形式多样展示.的信息量.全功能 等待(离开码邮箱) 历时30天我为了开发这个新闻clientAPP,下面简称觅闻 ht ...

  9. Android 开源框架Universal-Image-Loader学习

    Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二)--- 图片 ...

随机推荐

  1. MYSQL查询表结构

    mysql查看表结构命令,如下: desc 表名;show columns from 表名;describe 表名;show create table 表名; use information_sche ...

  2. javascript 变量转义

    $(this).append('<a href="2-1partner.html"><div><img width="645" h ...

  3. 原始的js代码和jquery对比

    Even a task as simple as this can be complicated without jQuery at our disposal. In plain JavaScript ...

  4. uva 1390 - Interconnect(期望+哈希+记忆化)

    option=com_onlinejudge&Itemid=8&page=show_problem&category=514&problem=4136&mosm ...

  5. Phalcon资源文件管理(Assets Management)

    资源文件管理(Assets Management)¶ Phalcon\Assets是一个让开发人员管理静态资源的组件,如管理css,javascript等. Phalcon\Assets\Manage ...

  6. android用canvas绘制两种波纹效果

     波形效果有几种不同的呈现形式,比如从中间向四周散开的波形,也就是熟知的水涟漪:还有上下波动的曲线,像五线谱等.英文中可以称作Wave或者Ripple,所以暂且叫它们WaveView.WaveLayo ...

  7. POJ 2115 C Looooops(扩展欧几里得应用)

    题目地址:POJ 2115 水题. . 公式非常好推.最直接的公式就是a+n*c==b+m*2^k.然后能够变形为模线性方程的样子,就是 n*c+m*2^k==b-a.即求n*c==(b-a)mod( ...

  8. jquery特效 幻灯片效果

    jquery特效 幻灯片效果,效果图如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Cont ...

  9. 关于Hibernate数据库连接进程释放

    最近手里头又一桩事情蛮好玩的,就是用Hibernate进行批处理的时候,发现连接数暴增,oracle连接进程数吓死人.解决方案:不是把连接池设置成最大,那样服务器承载不了.及时清除缓存.另外在hibe ...

  10. 终于懂了:WM_PAINT 与 WM_ERASEBKGND(三种情况:用户操作,UpdateWindow,InvalidateRect产生的效果并不相同),并且用Delphi代码验证 good

    一直对这两个消息的关系不是太了解,借重新深刻学习windows编程的机会研究一番. 1)当窗口从无效变为有效时,比方将部分覆盖的窗口恢复时会重绘窗口时:程序首先会通过发送其他消息调用DefWindow ...