科技美学

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  90 随笔 :: 0 文章 :: 1 评论 :: 69570 阅读

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

 

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   chankuang  阅读(440)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示