отправлять данные в циклах-потоках - PullRequest
0 голосов
/ 06 мая 2011

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

Проблема в том, как я могу это сделать: записать данные, разрешить клиентскому потоку, что я записал новые данные ... и до этого, пока я не закончу записывать данные в БД?

Запись данных в Db выполняется в onCreate (), только отправка выполняется в новом потоке. Thx

1 Ответ

1 голос
/ 07 мая 2011

как насчет использования очереди: 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
     }

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

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