Android开源client之LookAround学习(一)Application & 网络框架
2015-03-23 15:32
441 查看
之前看过开源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相关类。具体的可见源代码。整体来说,框架比較清晰。
对其源代码的分析分析例如以下。
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开源客户端之LookAround学习(一)Application & 网络框架
- Android开源客户端之LookAround学习(三) 界面框架
- Android 网络操作学习HttpURLConnection与HttpClient及网络框架选择
- android 学习随笔十一(网络:HttpClient框架)
- android 学习随笔十一(网络:HttpClient框架)
- Android网络框架学习之HttpClient
- Android 开源框架Universal-Image-Loader学习
- Android_开源框架_AndroidUniversalImageLoader网络图片加载
- 基于xmpp协议的开源框架androidpn学习笔记
- Android网络学习笔记--------框架及简介
- 开源网络抓包与分析框架学习-Packetbeat篇
- android 网络框架学习(okhttp,retrofit,rxjava)
- android 学习笔记之开源开发技术和框架
- Android YapHttp开源个人轻量级网络框架
- Android开源框架学习--GreenDao
- Android 开源网络框架(Android-Async-Http、Volley、OkHttp3、Retrofit2.0)对比
- Android网络框架学习之OkHttp
- Android打造自己的网络框架----RxJava的基础学习使用
- Android打造自己的网络框架----RxJava的基础学习使用2(map、flatMap)
- Android打造自己的网络框架----RxJava的基础学习使用3(线程控制 Scheduler)