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.
随机推荐
- Linux 基础入门一
操作系统1.简介OS: Operating System,通用目的的软件程序操作系统的内核(kernel): 操作系统其实也是一组程序.这组程序的重点在于管理计算机的所有活动及驱动系统中的所有硬件: ...
- Swoole 源码分析——基础模块之 Pipe 管道
前言 管道是进程间通信 IPC 的最基础的方式,管道有两种类型:命名管道和匿名管道,匿名管道专门用于具有血缘关系的进程之间,完成数据传递,命名管道可以用于任何两个进程之间.swoole 中的管道都是匿 ...
- 00074_Array类
1.Array类的概述 此类包含用来操作数组(比如排序和搜索)的各种方法.需要注意,如果指定数组引用为 null,则访问此类中的方法都会抛出空指针异常NullPointerException. 2.常 ...
- spring md5 加密
一.spring 自带的 DigestUtils 工具类可以进行 md5 加密 //导入包 import org.springframework.util.DigestUtils; //对密码进行 m ...
- JAVA的基本数据类型和引用数据类型的区别
引用数据类型: 类.接口类型.数组类型.枚举类型.注解类型: 基本数据类型和引用数据类型的区别: 基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上: 引用数据类型在被创 ...
- ASP.NET CORE--WIN10上无法单步调试解决方法
参考这篇文章 http://www.cnblogs.com/artech/p/debug-in-vs-code.html In order to be able to debug cross-plat ...
- 使用githug游戏提高git水平
- CF894A QAQ
CF894A QAQ 题意翻译 题目大意: 给定一个字符串,字符串长度<=100,现在要求出字符串中'QAQ'的个数,注意,'QAQ'可以不连续,只要有顺序就可以了,例如QABQ也有一个QAQ ...
- gitlab一键安装 笔记
0 简单介绍bitnami和gitlab bitnami BitNami是一个开源项目,该项目产生的开源软件包安装 Web应用程序和解决方式堆栈.以及虚拟设备. bitnami主办Bitrock公司成 ...
- UI各种小控件的用法
今天给大家列举出来UI中的一些小控件的用法.方便大的学习与使用 一些方法和属性我们能够查看API文档.不必将每一个控件的功能都记住, 由于在使用的过程中,我们能够查看API文档.方便使用,我们仅仅要记 ...