一个折腾很久的支付宝支付的问题【多线程问题】
来源:互联网 发布:网上上课软件免费 编辑:程序博客网 时间:2024/05/16 06:49
<span style="white-space:pre"></span>/** * call alipay sdk pay. 调用SDK支付 * */public void pay(View v) {final String payInfo = Service.service.getAlipayRequest();Toast.makeText(PayDemoActivity.this, payInfo,Toast.LENGTH_SHORT).show();Runnable payRunnable = new Runnable() {@Overridepublic void run() {// 构造PayTask 对象PayTask alipay = new PayTask(PayDemoActivity.this);// 调用支付接口,获取支付结果String result = alipay.pay(payInfo);Message msg = new Message();msg.what = SDK_PAY_FLAG;msg.obj = result;mHandler.sendMessage(msg);}};// 必须异步调用Thread payThread = new Thread(payRunnable);payThread.start();}
<pre name="code" class="java">Service.service.getAlipayRequest:public String getAlipayRequest(){
try{
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode() == 200){
InputStream inStream = conn.getInputStream();
byte[] data = StreamTool.read(inStream);
String html = new String(data, "UTF-8");
return html;
}}catch(Exception e){}
return "";
}
发现一个很重要的问题,支付宝的请求发起放在子线程中,获取请求串的动作放在服务端,在客户端通过URLConnection请求。如果我们把这个请求放在主线程中,可能由于这个操作比较耗时造成支付线程的payInfo为空。那么应该将请求的操作放在支付线程中,请求完成之后才向支付宝发起请求。如下:
<span></span>/** * call alipay sdk pay. 调用SDK支付 * */public void pay(View v) {Runnable payRunnable = new Runnable() {@Overridepublic void run() {
<pre name="code" class="java"><span style="white-space:pre"></span>final String payInfo = Service.service.getAlipayRequest();<span style="white-space:pre"></span>Toast.makeText(PayDemoActivity.this, payInfo,Toast.LENGTH_SHORT).show();// 构造PayTask 对象PayTask alipay = new PayTask(PayDemoActivity.this);// 调用支付接口,获取支付结果String result = alipay.pay(payInfo);Message msg = new Message();msg.what = SDK_PAY_FLAG;msg.obj = result;mHandler.sendMessage(msg);}};// 必须异步调用Thread payThread = new Thread(payRunnable);payThread.start();}此例子充分说明,在android或其他的开发中,多线程问题永远是需要特别注意的问题,尤其是需要有序的操作,需要使用线程的同步和通信技术,否则造成数据的不正确。
0 0
- 一个折腾很久的支付宝支付的问题【多线程问题】
- Ali支付宝的支付问题
- 关于支付宝支付的问题
- 关于支付宝支付出现的问题
- 一个支付账号绑定两个应用的问题(支付宝和微信支付)
- 微信支付里的一个问题
- 支付遇到的问题
- IOS集成支付宝支付方法和问题的总结
- 最近项目完工,纪录一下支付宝支付的问题!!!
- 支付宝支付集成以及遇到的问题ios
- 支付宝支付接口遇到的问题总结
- ios导入支付宝移动支付遇到的问题
- swift集成支付宝支付遇到问题的汇总
- 支付宝快捷支付问题
- 支付宝支付问题记录
- ReactNative支付宝支付问题
- 支付宝 app支付问题
- 支付宝对接支付问题
- Android20之外部存储
- HDU 1418 抱歉 (欧拉公式)
- 九度 OJ 1051:数字阶段求和
- Ionic 常见问题及解决方案——留着给自己解解惑~~
- Jstorm 集群搭建过程及一键安装部署脚本
- 一个折腾很久的支付宝支付的问题【多线程问题】
- MySQL的几个重要目录
- Xcode git 忽略userinterfacestate文件|.DS_Store文件
- 简单介绍下
- 【例题】【动规】最长上升子序列
- 自然语言处理
- 卸载openfire
- MyTimeUtil时间工具类
- 8. String to Integer (atoi)