Как передавать данные каждые 15 секунд?

255
05 января 2017, 05:35

Есть приложение, в котором получаю данные с EditText и GPS и отправляю в БД MySQL удаленно через HttpURLConnection. Это надо делать через каждые 15 секунд после нажатия на кнопку. Всё готово и работает, но приложение зависает, когда делаю бесконечный цикл. Что делать?

Sender s = new Sender(MainActivity.this, urlAddress, lat, nameTxt, posTxt,
        teamTxt, idTxt, numTxt);
s.execute();
Answer 1

Это можно делать вот так, например:

private Handler handler = new Handler();
private boolean weNeedToContinue = true;
private void doSomethingPeriodically() {
    // TODO здесь делай свою работу
    if (weNeedToContinue) {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                doSomethingPeriodically();
            }
        }, 15000);
    }
}

Обратите внимание, что работа будет выполняться в главном (UI) потоке. Выполнять взаимодействие с сервером из главного потока опасно.

Answer 2

Для таких задач в Android есть два класса, это JobScheduler (доступен только с 21 api) и GcmNetworkManager. Я думаю вам лучше на последний вариант посмотреть. Вот пример github

READ ALSO
Не работает метод add в ArrayList

Не работает метод add в ArrayList

Есть готовый код класса коллекцииОн работает

298
Проверить объекты в коллекции в цикле

Проверить объекты в коллекции в цикле

Есть класс SingleWord с полями String word, String alphabet, int iconЕсть коллекция ArrayList<SingleWord>, которая хранит объекты типа SingleWord

273