我正在设置一个 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():此方法唤醒正在该对象监视器上等待的单个线程。
添加回答
举报
0/150
提交
取消