新手-99 2022-07-29 07:30 采纳率: 79.3%
浏览 44
已结题

安卓POST请求怎么放到线程里?

最近写了个获取验证码,为减少代码复用,我把post网络请求放在了一个工具类里面,当主程序无需获取服务器的返回数据时,只用new Thread这种线程就行了,但是当需要获取返回值时,比如获取用户名,验证码等,用new Thread就不行了

请问怎么实现在一个有返回值的post请求方法中开创线程?并且主程序还能调用这个return数据?真是刚入坑,自己实现不了,多谢多谢!

  • 写回答

3条回答

  • 耳东陈2022 2022-07-29 09:23
    关注

    还是可以用new Thread,只不过在run方法中要通过handler传值给主线程
    class Mhandler extends Handler {

        // 通过复写handlerMessage() 从而确定更新UI的操作
        @Override
        public void handleMessage(Message msg) {
            // 根据不同线程发送过来的消息,执行不同的UI操作
            // 根据 Message对象的what属性 标识不同的消息
            switch (msg.what) {
                case 1:
                    mTextView.setText("执行了线程1的UI操作");
                    break;
                case 2:
                    mTextView.setText("执行了线程2的UI操作");
                    break;
            }
        }
    }
    

    // 此处用2个工作线程展示
    new Thread() {
    @Override
    public void run() {
    这里执行http请求
    String result = post(url,data);
    // 通过sendMessage()发送
    // a. 定义要发送的消息
    Message msg = Message.obtain();
    msg.what = 2; //消息的标识
    msg.obj =result; // 消息的存放
    // b. 通过Handler发送消息到其绑定的消息队列
    mHandler.sendMessage(msg);
    }
    }.start();

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 7月29日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器