慕尼黑8549860
2023-11-10 16:41:29
我正在設(shè)置一個(gè) Android 訂單接受應(yīng)用程序,并且需要將訂單存儲(chǔ)在 google 表格中。它有效,但直到我在 for 循環(huán)中添加 post 請(qǐng)求函數(shù)。所以我通過在 for 循環(huán)中添加延遲來解決這個(gè)問題。但是,還有其他方法可以做到這一點(diǎn)嗎?因?yàn)槊看挝姨峤挥唵螘r(shí),應(yīng)用程序都會(huì)滯后,直到 for 循環(huán)完成。我添加了一個(gè) thread.sleep 來避免這個(gè)問題,如下所示: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(); }這是谷歌應(yīng)用程序: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);}我可以對(duì) java 循環(huán)或 google 應(yīng)用程序做些什么,這樣我就可以避免使用 thread.sleep 來凍結(jié)我的應(yīng)用程序,直到操作完成?也許有一種在java中延遲的替代方法?或者在谷歌應(yīng)用程序中更快的操作?
1 回答

隔江千里
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
為了實(shí)現(xiàn)你想要的,我建議使用多線程。
多線程是一種 Java 功能,允許并發(fā)執(zhí)行程序的兩個(gè)或多個(gè)部分,以最大限度地利用 CPU。此類程序的每個(gè)部分稱為線程。因此,線程是進(jìn)程中的輕量級(jí)進(jìn)程。
這樣,當(dāng)您的 POST 請(qǐng)求在不同的線程中處理時(shí),您的應(yīng)用程序?qū)⒗^續(xù)在線程中運(yùn)行。請(qǐng)記住為了?wait()
,和notify()
方法。
上述方法用于控制您的工作流程。
wait():此方法的行為與僅執(zhí)行調(diào)用 wait(0) 完全相同。
notify():此方法喚醒正在該對(duì)象監(jiān)視器上等待的單個(gè)線程。
添加回答
舉報(bào)
0/150
提交
取消