отправка данных циклически-потоки

#android #database #multithreading

#Android #База данных #многопоточность

Вопрос:

Если у меня есть база данных, в которую я записываю данные шаг за шагом (с интервалом в 5 минут), и как только я записываю новые данные в БД, у меня есть клиентский поток, который берет их оттуда и отправляет на удаленный сервер.

Проблема в том, как я мог это сделать: записать данные, позволить клиентскому потоку, чтобы я записал новые данные … и так до тех пор, пока я не закончу запись данных в DB?

Запись данных в базу данных выполняется в onCreate(), только часть отправки выполняется в новом потоке. Спасибо

Ответ №1:

как насчет использования очереди: BlockingQueue mQueue=new LinkedBlockingQueue();

 private class RemoteWriter implements Runnable{
      private final BlockingQueue queue;
      RemoteWriter(BlockingQueue q) { queue=q;}
    public void run() {
      try {
      while (true) {processObject(queue.take());}
      } catch (InterruptedException ex) { //do something
      }
    }
      void processObject(Object o) { 
         //write it to your server
      }
    }


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    RemoteWriter rw=new RemoteWriter(mQueue);
    new Thread(rw).start();
            // rest of your code
     }
  

Затем в вашем рабочем потоке (или потоке пользовательского интерфейса) просто поместите материал в очередь.