zoukankan      html  css  js  c++  java
  • Gson解析后的数据存到本地数据库 耗时的问题

    最近一直在做数据同步 从接口那边拿到的数据存在本地数据库的过程中 加载数据的时间一直是个很头疼的问题 下面有两种方法 对比一下 第二种加载数据耗时更少 更为快捷一些

    // [start] 字典数据同步
    public static void getUpdateDictionary(final String clientVersion, final Context context) {
    // TODO Auto-generated method stub
    DicComplete=false;
    HashMap<String, String> paramDictionary = new HashMap<String, String>();
    paramDictionary.put("clientVersion", clientVersion);
    System.out.println("=======getUpdateDictionary" + clientVersion);
    BaseProtocol updateProtocol = new BaseProtocol(paramDictionary);
    final String jsonDictionary = updateProtocol.toJson();

    paramsDictionary = new RequestParams();
    paramsDictionary.addQueryStringParameter("detail", jsonDictionary + "&" + DesityUtil.Random());

    NetUtils.getData(HttpMethod.POST, ConstantValue.COMMON + ConstantValue.UPDATEDICTIONARY_URL, paramsDictionary, new RequestCallBack<String>() {
    @Override
    public void onSuccess(ResponseInfo<String> responseInfo) {
    Gson gsonDictionary = new Gson();
    if (HispitalProtocol.checkResult(responseInfo)) {
    System.out.println("=======responseInfo" + responseInfo);
    final List<SysDicVO> fromJsonDictionary = gsonDictionary.fromJson(HispitalProtocol.getContentObj(responseInfo).toString(),
    new TypeToken<List<SysDicVO>>() {}.getType());
    new Thread() {
    public void run() {
    try {
    Date curDate = new Date(System.currentTimeMillis());

    db = DBManager.getInstance(new DBHelper(context)).openDatabase();
    db.beginTransaction();
    daoDictionary = new SysDicDaoImpl(db);

    int row = 0;
    for (int i = 0; i < fromJsonDictionary.size(); i++) {
    SysDicVO sysDicVO = new SysDicVO();
    sysDicVO.setId(fromJsonDictionary.get(i).getId());
    sysDicVO.setCode(fromJsonDictionary.get(i).getCode());
    sysDicVO.setName(fromJsonDictionary.get(i).getName());
    sysDicVO.setParent_id(fromJsonDictionary.get(i).getParent_id());
    sysDicVO.setBase_version(fromJsonDictionary.get(i).getBase_version());
    sysDicVO.setStatus(fromJsonDictionary.get(i).getStatus());
    // sysDicVO.setSort(0);

    List<SysDicVO> sysDicVOs = daoDictionary.findByCondition(new String[] { DBHelper.T_ID },
    DBHelper.T_ID + " = ? ", new String[] { sysDicVO.getId() }, null);
    if (null != sysDicVOs && sysDicVOs.size() > 0) {
    daoDictionary.update(sysDicVO, sysDicVO.getId());
    } else {
    daoDictionary.insert(sysDicVO);
    }

    // row = daoDictionary.update(sysDicVO, sysDicVO.getId());
    // if (row==0){
    // daoDictionary.insert(sysDicVO);
    // }
    }
    db.setTransactionSuccessful();

    Date endDate = new Date(System.currentTimeMillis());
    long diff = endDate.getTime() - curDate.getTime();

    Toast.makeText(context, "=================diff================ " + diff, 1000);

    DicComplete=true;
    } catch (Exception e) {
    DicComplete=false;
    e.printStackTrace();
    } finally {
    if (null != db)
    db.endTransaction();
    }
    }
    }.start();
    }
    }

    @Override
    public void onFailure(HttpException error, String msg) {
    System.out.println("失败");
    }
    });
    }
    //[end]

    // [start] 字典数据同步1
    public static void getUpdateDictionary1(final String clientVersion, final Context context) {
    // TODO Auto-generated method stub
    DicComplete=false;
    HashMap<String, String> paramDictionary = new HashMap<String, String>();
    paramDictionary.put("clientVersion", clientVersion);
    System.out.println("=======getUpdateDictionary1" + clientVersion);
    BaseProtocol updateProtocol = new BaseProtocol(paramDictionary);
    final String jsonDictionary = updateProtocol.toJson();

    paramsDictionary = new RequestParams();
    paramsDictionary.addQueryStringParameter("detail", jsonDictionary + "&" + DesityUtil.Random());

    NetUtils.getData(HttpMethod.POST, ConstantValue.COMMON + ConstantValue.UPDATEDICTIONARY_URL, paramsDictionary, new RequestCallBack<String>() {
    @Override
    public void onSuccess(ResponseInfo<String> responseInfo) {
    Gson gsonDictionary = new Gson();
    if (HispitalProtocol.checkResult(responseInfo)) {
    System.out.println("=======responseInfo" + responseInfo);
    final List<SysDicVO> fromJsonDictionary = gsonDictionary.fromJson(HispitalProtocol.getContentObj(responseInfo).toString(), new TypeToken<List<SysDicVO>>() {
    }.getType());

    new Thread() {
    public void run() {
    try {

    Date curDate = new Date(System.currentTimeMillis());

    db = DBManager.getInstance(new DBHelper(context)).openDatabase();
    db.beginTransaction();
    daoDictionary = new SysDicDaoImpl(db);

    // List<SysDicVO> sysDicVOs = daoDictionary.findByCondition(new String[] { DBHelper.T_ID }, null, null, null);
    //
    // Map<String, String> maps = new HashMap<String, String>();
    // for (SysDicVO sysDicVO : sysDicVOs) {
    // maps.put(sysDicVO.getId(), sysDicVO.getId());
    // }

    StringBuffer sql_insert = new StringBuffer();
    StringBuffer sql_update = new StringBuffer();

    sql_insert.append(" replace into sys_dic (id, code, name, parent_id, base_version, status) values " +
    "(?,?,?,?,?,?) ");

    // sql_update.append(" update sys_dic set id = ?, code = ? , name = ? , parent_id = ?, base_version = ?, status = ? ");

    SQLiteStatement stat_insert = db.compileStatement(sql_insert.toString());
    // SQLiteStatement stat_update = db.compileStatement(sql_update.toString());

    String id = null;
    for (int i = 0; i < fromJsonDictionary.size(); i++) {
    // id = maps.get(fromJsonDictionary.get(i).getId());
    // if (null!=id && !"".equals(id) && id.equals(fromJsonDictionary.get(i).getId())) {
    // stat_update.bindString(1,fromJsonDictionary.get(i).getId());
    // stat_update.bindString(2,fromJsonDictionary.get(i).getCode());
    // stat_update.bindString(3,fromJsonDictionary.get(i).getName());
    // stat_update.bindString(4,fromJsonDictionary.get(i).getParent_id()!=null ? fromJsonDictionary.get(i).getParent_id():"");
    // stat_update.bindString(5,fromJsonDictionary.get(i).getBase_version());
    // stat_update.bindString(6,String.valueOf(fromJsonDictionary.get(i).getStatus()));
    // stat_update.executeInsert();
    // } else {
    stat_insert.bindString(1,fromJsonDictionary.get(i).getId());
    stat_insert.bindString(2,fromJsonDictionary.get(i).getCode());
    stat_insert.bindString(3,fromJsonDictionary.get(i).getName());
    stat_insert.bindString(4,fromJsonDictionary.get(i).getParent_id()!=null ? fromJsonDictionary.get(i).getParent_id():"");
    stat_insert.bindString(5,fromJsonDictionary.get(i).getBase_version());
    stat_insert.bindString(6,String.valueOf(fromJsonDictionary.get(i).getStatus()));
    stat_insert.executeInsert();
    //}



    // long result = stat.executeInsert();
    // if (result < 0) {
    // returnfalse;
    // }

    }
    db.setTransactionSuccessful();

    Date endDate = new Date(System.currentTimeMillis());
    long diff = endDate.getTime() - curDate.getTime();

    Log.i("log", "=================diff================ " + diff);

    DicComplete=true;
    } catch (Exception e) {
    DicComplete=false;
    e.printStackTrace();
    } finally {
    if (null != db)
    db.endTransaction();
    }
    }
    }.start();
    }
    }

    @Override
    public void onFailure(HttpException error, String msg) {
    System.out.println("失败");
    }
    });
    }
    //[end]

  • 相关阅读:
    SQL学习记录
    Python 函数和变量作用域
    Python 使用socket实现一对多通信
    Flask wtforms validate_on_submit() 无法返回值问题
    Flask WTForm BooleanField用法
    Python3 中的nonlocal用法
    Python 实现二进制循环效果
    Python 各种类型转换
    第一章:数据结构
    Python Challenge
  • 原文地址:https://www.cnblogs.com/achen0502/p/5108664.html
Copyright © 2011-2022 走看看