线程问题 之 支付时支付界面未弹出问题(C++调用Java)
2014-08-05 14:54
453 查看
<1>问题:
就是当你点击购买时,购买界面根本没有弹出来,这里是C++调用Java.
<2>Java端代码实现.
总结:解决方案就是这个好用的Handler ,Handler相当于开一个线程,当使用完毕后,自动回收.这就比较爽了.因此当在C++调用Java时,Java端代码的实现,请考虑Handler!
<3>C++端调用Java代码.
就是当你点击购买时,购买界面根本没有弹出来,这里是C++调用Java.
<2>Java端代码实现.
private static Handler mHandler = null;
//根据订单号购买商品(由C++调用) public void buyWithCooOrderSerial(final String orderId, final int tag) { mHandler = new Handler(Looper.getMainLooper()); mHandler.postDelayed(new Runnable() { @Override public void run() { if(ctx != null) { Log.e("****所购买的商品 订单号和标识号(Java端显示)****", "订单号:" + orderId + "***标识号:" + String.valueOf(tag)); //订单号productId String productIdArray[] = { "115429-20140801-105232094-84", "115429-20140728-194402904-98", "115429-20140728-194723885-16", "115429-20140728-194822884-58", "115429-20140728-194909696-39", "115429-20140728-195031058-12", "115429-20140728-195115225-34" }; // 商品名字 String productNameArray[] = { "月卡", "金元宝", "一堆金元宝", "一袋金元宝", "一盒金元宝", "一桶金元宝", "一箱金元宝" }; //商品价格 double moneyArray[] = {30, 6, 30, 98, 198, 368, 648}; NdBuyInfo buyInfo = new NdBuyInfo(); buyInfo.setSerial(orderId); buyInfo.setProductId(productIdArray[tag]); buyInfo.setProductName(productNameArray[tag]); buyInfo.setProductPrice(moneyArray[tag]); buyInfo.setCount(1); buyInfo.setPayDescription("商品描述信息:我就是这么帅!!!"); //购买结果监听 int aError = NdCommplatform.getInstance().ndUniPayAsyn(buyInfo, ctx, new NdMiscCallbackListener.OnPayProcessListener() { @Override public void finishPayProcess(int code) { tipsBuyCode(code); } }); if(aError != 0){ Log.e("**商品格式不对***", "***商品格式不对**"); } } } }, 1); }
总结:解决方案就是这个好用的Handler ,Handler相当于开一个线程,当使用完毕后,自动回收.这就比较爽了.因此当在C++调用Java时,Java端代码的实现,请考虑Handler!
<3>C++端调用Java代码.
void My91LoginImplAndroid::buyWithCooOrderSerial(string orderId) //根据订单号购买商品 { this->myOrderId = orderId; _my91Login->myOrderId = orderId; CCLOG("*******Android平台根据订单号买商品*******"); JniMethodInfo minfo; jobject jobj; if(JniHelper::getStaticMethodInfo(minfo, CLASS_NAME, "getInstance", "()Ljava/lang/Object;")) { jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID); if(JniHelper::getMethodInfo(minfo, CLASS_NAME, "buyWithCooOrderSerial", "(Ljava/lang/String;I)V")) { if(jobj == NULL) { return; } CCLog("***订单号:%s********标识号: %d*******", orderId.c_str(), tag); //传递订单号 和 标识 参数 jstring jorderId = minfo.env->NewStringUTF(orderId.c_str()); //string 转化jstring jint jtag = tag; //int转化jint minfo.env->CallVoidMethod(jobj, minfo.methodID, jorderId, jtag); CCLOG("*****JNI调用订单购买成功******"); } } }总结:注意里面有C++的string转化为Java的String类型.其次,Java段代码的final对C++这端的签名没影响.
相关文章推荐
- 充值界面线程之 黑边 问题(Java调用C++时引起的线程问题)
- android jni c/c++线程通过CallVoidMethod调用java函数出现奔溃问题
- java 中System.loadLibrary()调用c++Dll的路径问题
- linux下使用jni实现c++调用java程序(2)找不到java类的问题
- unity调用Android通过编译 java jar包出现问题解决和简单支付流程
- java调用C++的dll遇到问题
- Android上的C/C++调用Java问题(转载)
- java 线程遇到的问题及解决方法 JNI调用
- android 5.0 以上版本 c++调用java 崩溃问题
- C++调用Android函数弹出一个提示框中出现的问题总结
- C++ 与 JAVA调用问题
- Java JNI 调用C++ API及中文编码问题
- java 中System.loadLibrary()调用c++Dll的路径问题
- jni关于从java端调用C++的问题
- java调用c++生成的动态和静态库时遇到的问题
- c++调用java弹出提示框
- Java JNI 调用C++ API及中文编码问题
- java 中调用c++Dll的路径问题
- java中,多个线程同时调用同一个静态方法的问题
- 有关非Java代码(即Java调用C++中自然方法)的问题