Как разрешить быстрые почтовые запросы в Google-App? - PullRequest
1 голос
/ 19 октября 2019

Я настраиваю приложение для приема заказов на Android, и мне нужно хранить заказы в листах Google. Это работает, но пока я не добавил функцию post post в цикле 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();
    }

Вот приложение Google:

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? или более быстрая работа в приложениях Google?

1 Ответ

1 голос
/ 21 октября 2019

Для достижения того, что вы хотите, я бы рекомендовал многопоточность.

Многопоточность - это функция Java, которая позволяет одновременно выполнять две или более части программы для максимальной загрузки ЦП. Каждая часть такой программы называется потоком. Таким образом, потоки - это облегченные процессы внутри процесса.

Таким образом, ваше приложение будет продолжать работать в потоке, пока ваш запрос POST обрабатывается в другом потоке. Пожалуйста, имейте в виду, что для wait() и notify() методов.

Вышеуказанные методы используются для управления вашим рабочим процессом.

  • wait () : этот метод ведет себя точно так же, как если бы он просто выполнял ожидание вызова (0).
  • notify () : Этот метод вызывает один поток, который ожидает на мониторе этого объекта.

Подробнее о многопоточности в Java, здесь .

Здесь вы найдете более подробную информацию о методах, упомянутых выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...