android handler传递数据
起因:在android使用get请求获取验证码时需要重开一个线程,这就造成了我无法获取到从服务器后台返回的数据
解决方法:创建全局变量,将返回的数据解析后返回给handler,再在handler中将数据赋值给全局变量
部分代码如下:
private void getYzm(int money) {
// TODO Auto-generated method stub
String res = "";
Date nowTime = new Date();
SimpleDateFormat time = new SimpleDateFormat("yyMMddHHmm");
String tel = PhoneUtils.getPhoneNumber(context);
final String paramData = "imsi=" + imsi + "&imei=" + imei + "&tel="
+ tel + "&money=" + money + "&app="
+ app+ "&time=" + time.format(nowTime);
String resultCode;
new Thread(){
public void run() {
final String gainCode = HttpRequest.sendGet(url,
paramData);
// url是请求验证码地址,是一个全局变量,这里没有列出来,paramData是请求参数,HttpRequest是一个工具类,下面发链接
String resultCode;
JSONObject dataJson;
String orderid;
try {
dataJson = new JSONObject(gainCode);
resultCode = dataJson.getString("resultCode");
orderid=dataJson.getString("orderid");
if("200000".equals(resultCode)){
msg = handler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString("orderid", orderid);// 将服务器返回的订单号传到Bundle中,,再通过handler传出
msg.setData(bundle);
msg.arg1 = 0; // 0为获取验证码成功
handler.sendMessage(msg);
}else{
msg = handler.obtainMessage();
msg.arg1 = 1; // -1为获取验证码失败
handler.sendMessage(msg);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
class MsgHandler extends Handler {
private Activity activity;
public MsgHandler(Activity activity){
this.activity=activity;
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.arg1) {
case 0:
dialog.show();
Bundle bundle=msg.getData();
orderid=bundle.getString("orderid");// 这里的orderid是一个全局变量
break;
case 1:
showInfo("获取验证码失败!");
break;
case 2:
showInfo("订购成功!");
break;
case 3:
showInfo("提交验证码错误,请重新测试!");
break;
default:
break;
}
super.handleMessage(msg);
}
android handler传递数据的更多相关文章
- Android Handler传递参数动态更新UI界面demo
package com.example.demo_test; import android.app.Activity; import android.os.Bundle; import android ...
- 关于Android中传递数据的一些讨论--备用
在Android中编写过程序的开发人员都知道.在Activity.Service等组件之间传递数据(尤其是复杂类型的数据)很不方便.一般可以使用Intent来传递可序列化或简单类型的数据.看下面的代码 ...
- Android之间传递数据包
在Android中 ,我们知道,两个activity之间通讯要用到Intent类,传递简单数据的方式我们也已经知道了.那么,如何在两个activity之间传递数据包呢,这就要用到我们的Bundle类了 ...
- 关于Android中传递数据的一些讨论
在Android中编写过程序的开发人员都知道.在Activity.Service等组件之间传递数据(尤其是复杂类型的数据)很不方便.一般可以使用Intent来传递可序列化或简单类型的数据.看下面的代码 ...
- Android开发—— 传递数据
一:使用静态变量传递数据 (1)静态变量传递数据,在目标Activity中声明静态变量,然后使用setText()方法将静态变量的值导出即可: (2)静态变量传递数据,在主Activity中对目标Ac ...
- Android Intent传递数据
刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据. 我们利用显示的方式进行Intent的启动. 1.启动intent并输入数据. Intent intent=new In ...
- Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。
activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.. 如果要启动的activit ...
- Android Bundle传递数据
1.传递普通数据 Intent intent=new Intent(MainActivity.this,TwoActivity.class); Bundle bundle=new Bundle(); ...
- Android Intent 传递数据注意事项
不要通过 Intent 在 Android 基础组件之间传递大数据(binder transaction缓存为 1MB),可能导致 OOM.
随机推荐
- Django_学生管理系统
一. Django简易学生管理系统 1.在pycharm中创建工程student_manage_system,添加app:student_manage 2.配置静态文件:在工程项目目录下新建目录sta ...
- IOS - 绘制文字 drawInRect: withFont: not working
在图形绘制中,我们经常会需要绘制文本,但我在给PDF上绘制Text时,始终绘制不上, 使用过: [str drawInRect:cubeRect withAttributes:attrs]; CGCo ...
- 分治FFT/NTT 模板
题目要我们求$f[i]=\sum\limits_{j=1}^{i}f[i-j]g[j]\;mod\;998244353$ 直接上$NTT$肯定是不行的,我们不能利用尚未求得的项卷积 所以要用$CDQ$ ...
- 理解 Javascript 执行上下文和执行栈
如果你是一名 JavaScript 开发者,或者想要成为一名 JavaScript 开发者,那么你必须知道 JavaScript 程序内部的执行机制.理解执行上下文和执行栈同样有助于理解其他的 Jav ...
- PatentTips - Optimizing power usage by factoring processor architectural events to PMU
BACKGROUND Processor power consumption has become a major issue in recent years. The current trend o ...
- 洛谷—— P1126 机器人搬重物
https://www.luogu.org/problem/show?pid=1126 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一个直径1.6米的球.在试验阶段,机 ...
- @responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object
@responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object 2.也可以再方法上添加@ResponseBody注解, 用于这个类里 ...
- Hadoop Word Count程序
Hadoop Word Count程序 pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...
- 【云快讯】之四十八《IBM和Cisco最新收购,加强Openstack易用能力》
2015-06-08 张晓东 东方云洞察 点击上面的链接文字,能够高速关注"东方云洞察"公众号 本周宣布的两起收购引人注意.思科购买Piston云计算公司.同期IBM的收购Blue ...
- Android scrollTo() scrollBy() Scroller解说及应用
版本号:1.0 日期:2014.6.17 2014.6.18 版权:© 2014 kince 转载注明出处 scrollTo() .scrollBy()及 Scroller在视图滑动中常常使用 ...