我正在设置一个安卓接单应用程序,需要将订单存储在谷歌表格中。它有效,但直到我在 for 循环中添加发布请求功能。所以我通过在 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 循环或谷歌应用程序做些什么,这样我就可以避免使用 thread.sleep,它会在操作完成之前卡住我的应用程序?也许是延迟 java 的另一种方法?或者在谷歌应用程序中运行更快?
最佳答案
为了达到你想要的效果,我会推荐多线程。
Multithreading is a Java feature that allows concurrent execution of two or more parts of a program for maximum utilization of CPU. Each part of such program is called a thread. So, threads are light-weight processes within a process.
这样,当您的 POST 请求在不同的线程中处理时,您的应用程序将继续在线程中运行。请记住,为了 wait()
和 notify()
方法。
上述方法用于控制您的工作流程。
- wait():此方法的行为就像它只是执行调用 wait(0) 一样。
- notify():此方法唤醒正在等待此对象监视器的单个线程。
有关 Java 中多线程的更多详细信息,here .
Here您将找到有关上述方法的更多详细信息。
关于java - 如何在 Google-App 上允许快速发布请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58467150/