之前看过开源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. COM实现过程

    前言 COM已经成为一个必需的东西了.在我们周围,可以说处处充满了COM – 如果你是在使用WINDOWS,并在其下面编写程序的话.然而,无论你是用VC,还是使用DELPHI进行COM编程时,在大多数 ...

  2. 强化一下开源库:Synopse

    http://synopse.info/fossil/wiki/Synopse+OpenSource 有空要研究一下,只有写在这里,才会时时刻刻提醒自己.

  3. hdu 4803 贪心/思维题

    http://acm.hdu.edu.cn/showproblem.php?pid=4803 话说C++还卡精度么?  G++  AC  C++ WA 我自己的贪心策略错了 -- 就是尽量下键,然后上 ...

  4. Ace of Aces

    Description There is a mysterious organization called Time-Space Administrative Bureau (TSAB) in the ...

  5. Swift中使用typealias定义一个闭包closure

    在OC中我们定义一个Blocks是这样定义的: typedef void (^ZWProgressHUDCompletionBlock)(); 在Swift中定义一个闭包是这种: typealias ...

  6. Swift - 导航条(UINavigationBar)的使用

    与导航控制器(UINavigationController)同时实现导航条和页面切换功能不同. 导航条(UINavgationBar)可以单独使用,添加至任何的UIView中.UINavigation ...

  7. 插件 - 提示窗体(ArtDialog)

    效果: 代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default. ...

  8. VC图形绘制双缓存的代码复用性讨论

    在前文中已经讨论了如何实现界面绘制双缓存的问题,前文网址如下: http://www.2cto.com/kf/201111/112429.html 双缓存的主要思路是:先把图形绘制到内存DC中,然后再 ...

  9. Hadoop 的常用组件一览

    Hadoop 集群安装及原理:hdfs命令行操作:Java操作hdfs的常用API接口:动态添加删除数据节点. HBase 集群安装及原理:Hbase命令行操作:Java操作Hbase的常用API接口 ...

  10. CentOS5.6下安装Oracle10G软件 【保留报错经验】

    CentOS5.6下安装Oracle10G ****************************************************************************** ...