Android开源客户端之LookAround学习(一)Application & 网络框架

之前看过开源客户端LookAround(下载地址:http://download.csdn.net/detail/hualulove/7306807),链接:http://blog.csdn.net/lancees.

对其源码的分析分析如下。

1 LookAround Application

自定义Application。用于全局都用到的变量或者全局都进行的处理。LookAround的自定义Application,保存了登录状态、登录后的数据、软件是否更新等全局变量,做了第三方统计工具友盟还有ShareSDK的事情。

 

2 LookAround客户端网络请求框架:

Android开源客户端之LookAround学习(一)Application & 网络框架_第1张图片

用户界面得到请求的对象,进行数据打包,一般是将对象转变为JSON格式,同时传入回调处理接口。网络层通过HttpClient向服务器发送请求,一般为异步请求。请求返回后,将返回的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相关类。详细的可见源码。总体来说,框架比较清晰。

 

 

 


你可能感兴趣的:(java,android)