为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Google-App 上允许快速发布请求?

如何在 Google-App 上允许快速发布请求?

慕尼黑8549860 2023-11-10 16:41:29
我正在设置一个 Android 订单接受应用程序,并且需要将订单存储在 google 表格中。它有效,但直到我在 for 循环中添加 post 请求函数。所以我通过在 for 循环中添加延迟来解决这个问题。但是,还有其他方法可以做到这一点吗?因为每次我提交订单时,应用程序都会滞后,直到 for 循环完成。我添加了一个 thread.sleep 来避免这个问题,如下所示:for (int i = 0; i < order.size(); i++){    String itemName = order.get(i);    String addOn = addOns.get(i);    String quantity = order.get(i);    quantity = quantity.substring(quantity.length() -  2, quantity.length() - 1);    itemName = itemName.substring(0, itemName.length() - 4);    System.out.println("Item ID: " + i + " " + itemName + " " + addOn + " " + quantity + " " + orderId );    try{        Thread.sleep(550); //This is the delay I added.    }catch(InterruptedException ex){        //do stuff    }    addItemToSheet(itemName,addOn,quantity,orderId);}    if (null != getActivity()) {        ((MainActivity) getActivity()).clearOrderList();    }这是谷歌应用程序:var ss = SpreadsheetApp.openByUrl("SPREADSHEET URL");var sheet = ss.getSheetByName('Items'); function doPost(e){  var action = e.parameter.action;  if(action == 'addItem'){    return addItem(e);  }}function addItem(e){  var date =  new Date();  var id  =  sheet.getLastRow();   var orderNum = e.parameter.orderNum;  var itemName = e.parameter.itemName;  var quantity = e.parameter.quantity;  var extra = e.parameter.extra;  sheet.appendRow([date,id,orderNum,itemName,quantity,extra]);  return ContentService.createTextOutput("Success").setMimeType(ContentService.MimeType.TEXT);}我可以对 java 循环或 google 应用程序做些什么,这样我就可以避免使用 thread.sleep 来冻结我的应用程序,直到操作完成?也许有一种在java中延迟的替代方法?或者在谷歌应用程序中更快的操作?
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

为了实现你想要的,我建议使用多线程。

多线程是一种 Java 功能,允许并发执行程序的两个或多个部分,以最大限度地利用 CPU。此类程序的每个部分称为线程。因此,线程是进程中的轻量级进程。

这样,当您的 POST 请求在不同的线程中处理时,您的应用程序将继续在线程中运行。请记住为了 wait(),和notify()方法。

上述方法用于控制您的工作流程。

  • wait():此方法的行为与仅执行调用 wait(0) 完全相同。

  • notify():此方法唤醒正在该对象监视器上等待的单个线程。


查看完整回答
反对 回复 2023-11-10
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信