/*
* @Company 浙 江 鸿 程 计 算 机 系 统 有 限 公 司
* @URL http://www.zjhcsoft.com
* @Address 杭州滨江区伟业路1号
* @Email jinjr@zjhcsoft.com
* @author jinjr
* @data 2016-1-5 下午2:58:45
*/
package com.android.hcframe.internalservice.sign; import android.content.Context;
import android.text.TextUtils; import com.android.hcframe.CacheManager;
import com.android.hcframe.HcApplication;
import com.android.hcframe.HcLog;
import com.android.hcframe.HcUtil;
import com.android.hcframe.TemporaryCache;
import com.android.hcframe.http.AbstractHttpRequest;
import com.android.hcframe.http.AbstractHttpResponse;
import com.android.hcframe.http.HcHttpRequest;
import com.android.hcframe.http.IHttpResponse;
import com.android.hcframe.http.RequestCategory;
import com.android.hcframe.http.ResponseCategory;
import com.android.hcframe.sql.SettingHelper; import org.json.JSONObject; import java.util.Observable; public class SignCache extends Observable implements IHttpResponse, TemporaryCache { private static final String TAG = "SignCache"; private final static SignCache CACHE = new SignCache(); private SignCofig mConfig; private SignCache() {
CacheManager.getInstance().addCache(this);
mConfig = new SignCofig();
} public static SignCache getInstance() {
return CACHE;
} @Override
public void clearCache(boolean exit) {
if (exit) mConfig = null;
else {
clearCache();
} } private static class SignCofig {
/** 纬度 */
String mLatitude;
/**
* 经度
*/
String mLongitude;
/**
* 标准上班时间
*/
String mWorkInTime;
/**
* 标准下班时间
*/
String mWorkOutTime;
/**
* 当天签到时间
*/
String mSignInTime;
/**
* 当天签出时间
*/
String mSignOutTime;
/**
* 有效距离
*/
int mDistance;
} public int getMaxDistance() {
return mConfig.mDistance;
} public void setMaxDistance(int maxDistance) {
mConfig.mDistance = maxDistance;
} public String getLatitude() {
return mConfig.mLatitude;
} public void setLatitude(String latitude) {
mConfig.mLatitude = latitude;
} public String getLongitude() {
return mConfig.mLongitude;
} public void setLongitude(String longitude) {
mConfig.mLongitude = longitude;
} public String getWorkInTime() {
return mConfig.mWorkInTime;
} public void setWorkInTime(String workInTime) {
mConfig.mWorkInTime = workInTime;
} public String getWorkOutTime() {
return mConfig.mWorkOutTime;
} public void setWorkOutTime(String workOutTime) {
mConfig.mWorkOutTime = workOutTime;
} public String getSignInTime() {
return mConfig.mSignInTime;
} public void setSignInTime(String signInTime) {
mConfig.mSignInTime = signInTime;
} public String getSignOutTime() {
return mConfig.mSignOutTime;
} public void setSignOutTime(String signOutTime) {
mConfig.mSignOutTime = signOutTime;
} @Override
public void notify(Object data, RequestCategory request,
ResponseCategory category) {
// TODO Auto-generated method stub
switch (request) {
case SIGNADDR:
switch (category) {
case SUCCESS:
if (data != null && data instanceof String) {
parseSignConfig((String) data);
SettingHelper.setSignInfo(HcApplication.getContext(), (String) data);
}
break; default:
break;
}
break; default:
break;
}
} @Override
public void notifyRequestMd5Url(RequestCategory request, String md5Url) {
// TODO Auto-generated method stub }
/**
* 判断签到的一些配置信息是否存在;
* 此方法不是很严谨
* @author jrjin
* @time 2016-1-5 下午3:16:08
* @return
*/
public boolean configExist(Context context) {
if (TextUtils.isEmpty(mConfig.mLatitude)) {
String data = SettingHelper.getSignInfo(context);
   if (!TextUtils.isEmpty(data))
parseSignConfig(data);
else { // 去服务器获取数据
if (HcUtil.isNetWorkAvailable(context)) {
HcHttpRequest.getRequest().sendSignAddrCommand(this);
}
// }
}
return !TextUtils.isEmpty(mConfig.mLatitude);
} private void parseSignConfig(String data) {
try {
JSONObject body = new JSONObject(data);
if (HcUtil.hasValue(body, "latitude")) {
mConfig.mLatitude = body.getString("latitude");
}
if (HcUtil.hasValue(body, "longitude")) {
mConfig.mLongitude = body.getString("longitude");
}
if (HcUtil.hasValue(body, "signInTime")) {
mConfig.mSignInTime = body.getString("signInTime"); }
if (HcUtil.hasValue(body, "signOutTime")) {
mConfig.mSignOutTime = body.getString("signOutTime"); }
if (HcUtil.hasValue(body, "workInTime")) {
mConfig.mWorkInTime = body.getString("workInTime"); }
if (HcUtil.hasValue(body, "workOutTime")) {
mConfig.mWorkOutTime = body.getString("workOutTime"); }
if (HcUtil.hasValue(body, "maxDistance")) {
mConfig.mDistance = body.getInt("maxDistance");
HcLog.D(TAG + " #parseSignConfig mDistance = " +mConfig.mDistance);
}
} catch (Exception e) {
// TODO: handle exception
HcLog.D(TAG + " #parseSignConfig e = "+e);
}
} /**
* 清除缓存
* @author jrjin
* @time 2016-1-28 下午1:45:10
*/
public void clearCache() {
mConfig = new SignCofig();
} }
 public void sendSignAddrCommand(IHttpResponse response) {
Map<String, String> httpparams = new HashMap<String, String>();
httpparams.put("account",
URLEncode(SettingHelper.getAccount(HcApplication.getContext())));
String stuxx = "";
try {
stuxx = HcUtil.getGetParams(HcUtil.mapToList(httpparams));
} catch (Exception e) {
e.printStackTrace();
} String url = HcUtil.getScheme() + BASE_URL + SignAddr.SignAddrUrl
+ stuxx;
// HcUtil.getScheme() + BASE_URL + SignItemInfo.URL + stuxx;
HcLog.D("HcHttpRequest sendSignAddrCommand url = " + url);
String key = hasInTask(url);
if (key == null)
return;
HttpGet get = new HttpGet(url);
SignAddr signAddr = new SignAddr(get);
signAddr.mCategory = RequestCategory.SIGNADDR;
signAddr.mResponse = response;
addTask(signAddr);
response.notifyRequestMd5Url(signAddr.mCategory, key);
mClient.execute(signAddr);
}
 public class SignAddr extends AbstractHttp {
private static final String TAG = HcHttpRequest.TAG + "#SignAddr"; private static final String SignAddrUrl = "getsignaddress"; public SignAddr(HttpUriRequest request) {
super(mClient, request, mHandler);
} @Override
public void parseJson(String data) {
cancelTask(this);
HcLog.D(TAG + " parseJson data = " + data);
try {
JSONObject object = new JSONObject(data);
if (object != null) {
int status = object.getInt(STATUS);
if (status == REQUEST_SUCCESS) {
postView(object.getJSONObject(BODY).toString(), mResponse, ResponseCategory.SUCCESS,
mCategory);
} else {
toastError(status, object, this);
}
}
} catch (Exception e) {
HcLog.D(TAG + " error = " + e);
postView(mCategory, mResponse, ResponseCategory.DATA_ERROR,
mCategory);
}
} @Override
public String getRequestMethod() {
// TODO Auto-generated method stub
return "getsignaddress";
}
}

Android 有缓存功能的请求封装接口的更多相关文章

  1. Android清除缓存功能来实现

    我们都知道在Android的设置->应用程序中能够查看应用程序的相关信息,当中有一个功能是清除缓存. 如图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...

  2. android 清除缓存功能

    本应用数据清除管理器 DataCleanManager.java   是从网上摘的 忘了 名字了 对不住了 载入一个webview   产生缓存  众所周知的webview是产生缓存的主要原因之中的一 ...

  3. Android,适合Restful网络请求封装

    借助volley.Gson类库. 优点 网络请求集中处理,返回值直接为预期的对象,不需要手动反序列,提高效率,使用时建立好model类即可. 使用效果 DataProess.Request(true, ...

  4. android:Android 6.0权限控制代码封装

    新建的Activity类可以继承这个Activity,这个类封装了关于新版的权限处理相关的代码 使用方法: package com.glsite.phone; import android.conte ...

  5. Flutter 实际开发常用工具类(全局提示,请求封装,token缓存,验证码倒计时、常用窗帘动画及布局)

    介绍: 一星期从入门到实际开发经验分享及总结           代码传送门github Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.未来App开发 ...

  6. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...

  7. 基于AFN封装的带缓存的网络请求

    给大家分享一个基于AFN封装的网络请求 git: https://github.com/zhouxihi/NVNetworking #带缓存机制的网络请求 各类请求有分带缓存 , 不带缓存, 可自定义 ...

  8. Android记录20-获取缓存大小和清除缓存功能

    Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓存 ...

  9. angular cli http请求封装+拦截器配置+ 接口配置文件

    内容:接口配置文件.http请求封装 .拦截器验证登录 1.接口配置文件 app.api.ts import { Component, OnInit } from '@angular/core'; / ...

随机推荐

  1. sublime text 2相关

    官网:http://www.sublimetext.com/2 安装包控制(Package Control) 打开Sublime Text 2,按快捷键 ctrl+` 或者点击 Tools → Com ...

  2. A5营销访谈:卢松松和你聊新媒体运营那些事

    A5芳芳:大家好,这里是A5营销(http://www.admin5.cn)专家访谈,今天请到的嘉宾—卢松松.首先感谢卢松松的参与,先做个简单的自我介绍吧,让大家先熟悉下您近来的发展方向. 卢松松:大 ...

  3. Spark Accumulators

    概述 Accumulator即累加器,与Mapreduce counter的应用场景差不多,都能很好地观察task在运行期间的数据变化,Spark中的Accumulator各task可以对Accumu ...

  4. 下载配置MySql,高速启动MySql批处理,MySQLclient软件SQL-Front的配置---ShinePans

    首先,下载 sql 绿色版,:  http://yunpan.cn/cgERHhTtV8XGh  提取码 85bc 然后解压就可以用, 安装文件夹下有bin文件夹,从里面的命令中启动服务 例如以下: ...

  5. JavaScript 函数基础

    1. JavaScript 函数基础 1. 定义方法 2. 函数的调用方法 3. 函数方法 apply : 将函数作为数组的方法来调用 将参数以数组形式传递给该方法 call   : 将函数作为对象的 ...

  6. Curl命令使用方法

    Curl是Linux下一个很强大的http命令行工具,其功能十分强大.1) 读取网页$ curl http://www.linuxidc.com2) 保存网页$ curl http://www.lin ...

  7. 如何判断Linux load的值是否过高

    1.先使用top看下CPU占用高的进程,找出进程的进程ID(pid): 查看方法:top 2.根据进程ID(pid)查看是进程的那些线程占用CPU高. 查看方法:top -Hp pid 3.使用pst ...

  8. Javascript进阶篇——总结--DOM案例+选项卡效果

    断断续续的把慕课的JavaScript基础和进阶看完了,期间不怎么应用有的都忘记了,接下来多开始写些效果,进行实际应用. 制作一个表格,显示班级的学生信息. 1. 鼠标移到不同行上时背景色改为色值为 ...

  9. 未能的导入项目,请确认<Import>声明中的路径正确

    对于这样的错误,根据提示应该是项目的管理文件(.csproj)中有问题.找到对应的位置修改即可

  10. Android开发环境的搭建之(一)Java开发环境的安装

    (1)  安装JDK(Java Developer Kit).下载JDK1.8并安装jdk-8u60-windows-i586.exe.下载官方链接http://www.oracle.com/tech ...