使用okhttp连接网络,再把数据储存进Sqlite

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

 

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 chankuang 阅读( ...) 评论( ...) 编辑 收藏

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值