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]

  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/achen0502/p/5108664.html
Copyright © 2011-2022 走看看