最近写了个获取验证码,为减少代码复用,我把post网络请求放在了一个工具类里面,当主程序无需获取服务器的返回数据时,只用new Thread这种线程就行了,但是当需要获取返回值时,比如获取用户名,验证码等,用new Thread就不行了
请问怎么实现在一个有返回值的post请求方法中开创线程?并且主程序还能调用这个return数据?真是刚入坑,自己实现不了,多谢多谢!
最近写了个获取验证码,为减少代码复用,我把post网络请求放在了一个工具类里面,当主程序无需获取服务器的返回数据时,只用new Thread这种线程就行了,但是当需要获取返回值时,比如获取用户名,验证码等,用new Thread就不行了
请问怎么实现在一个有返回值的post请求方法中开创线程?并且主程序还能调用这个return数据?真是刚入坑,自己实现不了,多谢多谢!
还是可以用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();