APICloud开发原生模块时程序第一次启动时需要点两次才能启动模块

Akitas 2016-08-15 12:08:59
使用APICloud编写原生模块用来调用银联支付的控件,首先需要对银联的一个服务接口进行绑定,在测试程序中第一次点击测试按钮不管方法执行几次服务都是未绑定状态,当第二次点击测试按钮的时候绑定服务的方法未执行,但是直接可以调用控件,加断点调试在第二次点击的时候服务已经是绑定状态不需要绑定,,也就是说在第一次点击按钮的时候绑定成功了但是在第一次点击时程序内判断它是未绑定的,将控件退出再点击测试时程序重新执行了绑定服务的方法并成功的调起了控件,只有在第一次打开程序的时候需要点两次,请大家帮我分析一下是什么原因,下面是模块方法的代码和服务绑定的代码。模块方法代码:
 public void jsmethod_getjson(UZModuleContext moduleContext)
{
JSONObject quickparams =moduleContext.optJSONObject("quickpay");
try {
mMerchantId =quickparams.getString("shopID");
mMerchantUserId =quickparams.getString("shopuserID");
mMerOrderId =quickparams.getString("shopIndent");
mAmountText =quickparams.getString("money");
mMobileId =quickparams.getString("phone");
//实例化ServiceManager对象
ServiceManager.getInstance().bindQuickPayService(mContext);
payOrder();
} catch (Exception e) {
// TODO: handle exception
}
}
public void payOrder() {
Bundle args = new Bundle();
args.putString("merchantId", mMerchantId);
args.putString("merchantUserId",mMerchantUserId);
args.putString("merOrderId",mMerOrderId);
mAmount =mAmountText;
// 将交易金额由元转成分
mAmount = Common.moneyTran(mAmount, 0);
args.putString("amount", mAmount);
args.putString("mobile",mMobileId);
args.putString("sign", getSignInfoData());
args.putString("mode", "2");
args.putString("notifyUrl", mNotifyUrl);
args.putString("signType", "RSA");
args.putBoolean("isProductEnv",true);
try {
if (ServiceManager.getInstance().mUmsQuickPayService == null) {
ServiceManager.getInstance().bindQuickPayService(mContext);
return;
}
ServiceManager.getInstance().mUmsQuickPayService.payOrder(args, new PayOrderResultListener());
} catch (RemoteException e) {
e.printStackTrace();
}
}

服务绑定代码
public class ServiceManager {

public IUmsQuickPayService mUmsQuickPayService;
private static ServiceManager instance;

private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.v("sss", "111");
mUmsQuickPayService = IUmsQuickPayService.Stub.asInterface(service);
Log.v("sss", "112");
}

@Override
public void onServiceDisconnected(ComponentName name) {
mUmsQuickPayService = null;
}

};

synchronized public static ServiceManager getInstance() {
if (instance == null) {
instance = new ServiceManager();
}
return instance;
}

public void bindQuickPayService(Context context) {
// 绑定远程服务
Intent intent = new Intent();
String servicePkgname = "com.chinaums.pppay";
intent.setClassName(servicePkgname, "com.chinaums.pppay.quickpay.service.QuickPayService");
// 与服务端进行绑定,绑定成功会回调onServiceConnected里面
context.bindService(intent, mConnection, Service.BIND_AUTO_CREATE);
}

public void unbindQuickPayService(Context context) {
context.unbindService(mConnection);
}
}

...全文
194 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧