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

我正在设置一个 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中延迟的替代方法?或者在谷歌应用程序中更快的操作?


慕尼黑8549860
浏览 116回答 1
1回答

隔江千里

为了实现你想要的,我建议使用多线程。多线程是一种 Java 功能,允许并发执行程序的两个或多个部分,以最大限度地利用 CPU。此类程序的每个部分称为线程。因此,线程是进程中的轻量级进程。这样,当您的 POST 请求在不同的线程中处理时,您的应用程序将继续在线程中运行。请记住为了 wait(),和notify()方法。上述方法用于控制您的工作流程。wait():此方法的行为与仅执行调用 wait(0) 完全相同。notify():此方法唤醒正在该对象监视器上等待的单个线程。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java