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();
                }

截图:

时间: 2024-10-13 12:07:11

Android -- 获取网络数据并将数据存到本地数据库中的相关文章

android获取某应用的帧数据

android获取某应用的帧数据: 说明: (打开手机 开发者选项-GPU显示配置文件(显示于 adb shell dumpsys gfxinfo)勾上,只有4.1以上支持) 在android4.1中,谷歌提供了一个工具来,叫做" GPU呈现模式分析(Profile GPU rendering)", 在开启这个功能后,系统就会记录保留每个界面最后128帧图像绘制的相关时间信息 开始操作: 命令行 adb shell dumpsys gfxinfo com.taobao.mobile.d

Android获取网络状态

Android获取网络状态 学习自 https://developer.android.google.cn/reference/android/net/ConnectivityManager http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html Overview 在做Android app的时候,网络的状态可能会经常的变化,当用户当前没有网络的时候,我们要保证程序不崩溃,而在当用户使用流量的话,则需要确保,在进行耗流量的操

SQL从其他服务器数据库导入数据到本地数据库中

EXEC sp_dropserver 'ITSV2', 'droplogins' exec sp_addlinkedserver 'ITSV2' , '' , 'SQLOLEDB' , '168.9.123.123' exec sp_addlinkedsrvlogin 'ITSV2' , 'false' , null , 'sa' , 'sa' drop table test2; select top 12 * into test2 from ITSV2.InfoDB.dbo.city sele

android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色

前言:因为找了N多网上的资源都没有好的解决方案,别人都是只给思路没给具体源码,真TMD纠结,干嘛求别人,自己动手才是真,最痛恨那些所谓大牛的作风,给了点点代码就让别人去想,你让我们这种小白情何于堪!!!!!!此例是基于listview来实现本地sqlite实现的! 二话不说,程序猿求的是有图有真相有源码!大家下载后有什么问题可以找到本人:QQ508181017 核心代码如下 1.数据库操作类 package com.icq.demo.db; import java.util.ArrayList;

android—获取网络数据

取网络数据主要靠发交易(或者说请求,接口等),而这些交易由java中的网络通信,HttpURLConnection和HttpClient实现,以下是具体例子. 大家都知道,网络通信,发送请求有两种方式,GET和POST,这里也不例外. 1.HttpURLConnection的GET方式获取网络数据,get方式将参数放在url后一起传递过去,而且会被看到,一般不太安全,但是get方式只获取数据,不会更新数据. 步骤: (1).建立URL,URL url=new URL(urltmp); //url

android 获取网络类型名称2G 3G 4G wifi

首先工程Manifest文件要引用: 1 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 2 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> //获取网络服务 1 public static String getNetworkTypeName(Co

Gson解析后的数据存到本地数据库 耗时的问题

最近一直在做数据同步 从接口那边拿到的数据存在本地数据库的过程中 加载数据的时间一直是个很头疼的问题 下面有两种方法 对比一下 第二种加载数据耗时更少 更为快捷一些 // [start] 字典数据同步 public static void getUpdateDictionary(final String clientVersion, final Context context) { // TODO Auto-generated method stub DicComplete=false; Has

将 node.js 的数据保存到 mongo 数据库中

Mongo 数据库 安装 首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2.6.4-signed.msi 执行安装程序. 下一步 同意许可协议 可以选择定制 Custom 看一下. 全部装上吧. 开始实际安装. MongoDB 默认安装到了 C:\Program Files\MongoDB 2.6 Standard\bin 目录下,但是,没有自动添加到 Path 路径中,手

Android获取网络类型

public static final String NETWORK_CLASS_UNKNOWN = "unknown"; public static final String NETWORK_CLASS_WIFI = "wifi"; public static final String NETWORK_CLASS_2_G = "2g"; public static final String NETWORK_CLASS_3_G = "3