一个轻型的Android库来验证,跟踪和缓存来自网络的数据,其内部的http实现是替代的,这里提供了齐射和改造。
应该指出的是,lib只是为了简化GET和POST在http中的常见条件,在某些特殊的情况下,应该使用http-lib的原始功能。
目标:
- 到验证,解析或减轻来自网络的响应数据,以从M在MVC模式解耦℃;
- 到跟踪一个请求-响应过程的一致性,特别是在与不同的请求主体相同的URL的高频条件。
- 到缓存只是由来自控制器命令代码的数据,以减轻使用和减少控制器的责任。
用法:
添加依赖关系
repositories {
jcenter()
}
dependencies {
compile 'com.cysion:Action:1.0.0'
...
}
-
应首先调用MvcPointer.init(actionListener,debug,httpProxy);
-
创建一个BaseAction类来扩展MvcAction类,它可以做一些常见的事情,比如标题:
@Override protected Map<String, String> getHeader() { Map<String,String> headers = new HashMap<>(); headers.put("test1","one"); headers.put("test2","two"); return headers; }
-
创建一个与json相关的javabean;
-
创建一个动作扩展BaseAction;
@Override protected String getUrl() { return Urls.BASE+Urls.FIND_COL; } @Override protected int getHttpMethod() { return Method_GET; } @Override protected boolean getTargetDataFromJson(String aResult, long aTaskId) { if(valid(){ listener.onSuccess(*targetResult*,aTaskId); return true; } return false; }
注意:getTargetDataFromJson()中的操作应该与上述相同;
-
new GetAction(listener).params(map).taskId(100).execute(DataState.CACHE_FIRST);
private TActionListener mActionListener = new TActionListener() { @Override public void onSuccess(Object obj, long taskId) { switch ((int)taskId) { case Action.NORMAL: //cache has done in action break; case Action.LOAD_MOER: //do some work break; case Action.REFRESH: //do some work break; } }
定制:
-
在一个Sub Action类中通过覆盖定义一个请求的缓存过期:
@Override protected int getKeepTime() { return 10;//TimeUnits:s }
-
通过覆盖在子Action类中定义一个特殊的头部:
protected Map<String, String> getHeader() { if (mHeader == null) { mHeader = new HashMap<>(); } return mHeader;
}
-
在子动作中覆盖下面的方法来设置特殊的http-impl:
protected HttpProxy getHttpProxy() { return MvcPointer.getHttpProxy(); }
}
-
去做...