当前位置: 首页 > news >正文

Android -- 获取网络数据并将数据存到本地数据库中

public static final int downloadDone = 1;

 // 用户model数组
    ArrayList<Loginer> loginers = new ArrayList<>();
    // hander
    Handler downloadLoginerHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case downloadDone:
                    Toast.makeText(MyApplication.getApplication(), "同步用户数据成功", Toast.LENGTH_SHORT).show();
                    break;
            }
            super.handleMessage(msg);
        }
    };

    // 从服务器更新loginer数据
    public  void downloadData() throws IOException, XmlPullParserException {
        new Thread(new Runnable() {
            @Override
            public void run() {
                String url = "http://222.169.11.226:7000/WebServiceAndroidcm.asmx/getloginerInfo";
                MyHTTP myHTTP = new MyHTTP();
                Map map = new HashMap();
                map.put("pw", "0535deer");
                try {
                    String string = myHTTP.doPost(url, map);
                    System.out.println("成功::::"+string);
                    String newString = string.replace("<?xml version=\"1.0\" encoding=\"utf-8\"?><string xmlns=\"http://tempuri.org/\">{\"Result\":\"1\",\"Value\":", "");
                    String lastString = newString.replace("}</string>", "");
                    // 将字符串进行解析
                    JsonParser jsonParser = new JsonParser();
                    // 将jsonstring转换为jaonArray
                    JsonArray jsonArray = jsonParser.parse(lastString).getAsJsonArray();
                    // gson
                    Gson gson = new Gson();
                    // for 循环遍历josnarray
                    for (JsonElement loginerElement : jsonArray) {
                        Loginer loginer = gson.fromJson(loginerElement, Loginer.class);
                        loginers.add(loginer);
                        System.out.println("大小是"+loginers.size());
                    }
                    // 获取dao对象
                    loginerDao = MyApplication.getApplication().getDaoSession().getLoginerDao();
                    // 新建一个Message对象
                    Message msg = new Message();
                   // 通过for循环插入数据到数据库
                    for (int i = 0; i < loginers.size(); i++) {
                        System.out.println("终于找到你:"+loginers.get(i).getLoginer_code());
                        long result = loginerDao.insertOrReplace(loginers.get(i));
                        System.out.println("结果是:"+result);
                        // 如果全部替换或插入成功, 则弹出更新用户数据成功
                        if (result == loginers.get(loginers.size() - 1).getLoginer_id()) {
                            // 发送同步完成的消息到message
                            msg.what = downloadDone;
                            downloadLoginerHandler.sendMessage(msg);
                            System.out.println("到最后一条了");

                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

调用:

// 开始更新loginers数据的数据
                try {
                    downloadData();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (XmlPullParserException e) {
                    e.printStackTrace();
                }

 

截图:

转载于:https://www.cnblogs.com/mafeng/p/6252681.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CSS选择符
  • Android 使用Socket进行通信(Android)
  • PythonNote01_HTML标签
  • CentOS7 搭建python3 Django环境
  • hibernate各种属性配置
  • Flexible 弹性盒子模型之CSS flex-flow
  • Python高手之路【四】python函数装饰器,迭代器
  • 常用的获取随机字符串
  • Eclipse中web项目部署至Tomcat步骤
  • java面试基础题,学习笔记!
  • UWP 律师查询 MVVM
  • flex键盘监听事件
  • VMWare Tools 和 Shared folder(共享文件夹)
  • flex自定义右键
  • js script中引用其他script
  • [case10]使用RSQL实现端到端的动态查询
  • 【RocksDB】TransactionDB源码分析
  • Docker: 容器互访的三种方式
  • Elasticsearch 参考指南(升级前重新索引)
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS学习笔记——闭包
  • Laravel 中的一个后期静态绑定
  • Python语法速览与机器学习开发环境搭建
  • Spring-boot 启动时碰到的错误
  • Vue全家桶实现一个Web App
  • 安卓应用性能调试和优化经验分享
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 写代码的正确姿势
  • 一起参Ember.js讨论、问答社区。
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 数据库巡检项
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (day18) leetcode 204.计数质数
  • (初研) Sentence-embedding fine-tune notebook
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (四)汇编语言——简单程序
  • (四)库存超卖案例实战——优化redis分布式锁
  • (四)图像的%2线性拉伸
  • (算法)求1到1亿间的质数或素数
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (转)linux 命令大全
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .net 设置默认首页
  • .Net下的签名与混淆
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [@Controller]4 详解@ModelAttribute
  • [].slice.call()将类数组转化为真正的数组