博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用okhttp连接网络,再把数据储存进Sqlite
阅读量:6966 次
发布时间:2019-06-27

本文共 2715 字,大约阅读时间需要 9 分钟。

这次会把所有之前学过的东西应用在一起,写一个登入的功能。

 

1. Activity调用CONFIG,获得URL后

2. Activity再调用Okhttp,从服务器返回JSON

3. Activity调用GsonTools,把JSON转换成<List>DTO

4. Activity调用DAO的get、set方法,把叁数<List>DTO传到方法

5. DAO继承DbHelper,把<List>DTO储存到Sqlite

 

以下是部份代码的精要

1. Activity初始化GsonTools、OkHttp、DAO。

private OkHttp okhttp;    private GsonTools gsonTools;    private BitMap bitMap;    private UserDAO userDAO;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_login);        okhttp = OkHttp.getInstance();        gsonTools = GsonTools.getInstance();        bitMap = BitMap.getInstance();        userDAO = new UserDAO(this);        initUI();        isHavingUserInSqlite();    }

2. 必须在新线程下调用Okhttp,而在该线程下想刷新UI,必须用runOnUiThread()。

// Network thread        new Thread(new Runnable() {            @Override            public void run() {                                // run your code here                // UI Thread                LoginActivity.this.runOnUiThread(new Runnable() {                    public void run() {                        // ui                    }                });            }        }).start();

3. 最核心的业务都在这里。

private void validUser() {        // Network thread        new Thread(new Runnable() {            @Override            public void run() {                ResultDTO resultDTO;                // check weather user is exist?                userExistURL = Configuration.isUserExistURL(userName, userPassword);                userExistResult = okhttp.getResponse(userExistURL);                resultDTO = gsonTools.getLogin(userExistResult);                // get user info if user is exist                if ( resultDTO.getResult().equals("1") ) {                    userGetURL = Configuration.getUserURL(resultDTO.getId());                    userResult = okhttp.getResponse(userGetURL);                    userDTO = gsonTools.getUser(userResult);                    // save user info into SQlite                    if ( userDAO.setUser(userDTO) )                    {                        intent = new Intent(LoginActivity.this, MainActivity.class);                        startActivity(intent);                    }                } else {                    loginMsg = "密碼或帳號不正確";                }                // UI Thread                LoginActivity.this.runOnUiThread(new Runnable() {                    public void run() {                        tvLoginResult.setText(loginMsg);                    }                });            }        }).start();    }

 

posted on
2017-12-27 19:53 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/chenkuang/p/8127431.html

你可能感兴趣的文章
screen
查看>>
支持免费的办公软件 IBM Symphony
查看>>
SQL Server 中函数的理解总结
查看>>
mysql5.1.X安装plugin
查看>>
Nginx+tomcat整合
查看>>
解决Vsphere Client 60天过期问题
查看>>
RDP error: This computer can’t connect to the remote computer
查看>>
Zabbix3.x安装图解教程
查看>>
linux rz sz 上传下载命令详解
查看>>
Know more about AWR Parse Statistics
查看>>
SElinux 配置与管理
查看>>
Script to Collect RAC Diagnostic Information (racdiag.sql)
查看>>
Linux对外连接端口数限制
查看>>
增加删除列列
查看>>
docker的资源隔离---cpu、内存、磁盘限制
查看>>
PMP考生最关心的八大问题
查看>>
SpringBoot启动分析
查看>>
python click模块-命令行神器
查看>>
Zabbix从入门到应用(一)
查看>>
让lync客户端显示电话号码等信息
查看>>