Страницы

Поиск по вопросам

пятница, 7 февраля 2020 г.

Android - как отправлять запрос с периодичностью 10 секунд на сервер? [закрыт]

#java #android


        
             
                
                    
                        
                            Закрыт. Этот вопрос необходимо уточнить или дополнить
подробностями. Ответы на него в данный момент не принимаются.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Добавьте больше подробностей
и уточните проблему, отредактировав это сообщение.
                        
                        Закрыт 3 года назад.
                                                                                
           
                
        
Как отправлять запрос с периодичностью  10 секунд на сервер? Я использую библиотеку
okhttp, скиньте пример, пожалуйста.
    


Ответы

Ответ 1



Timer timer = new Timer(); TimerTask timerTask = new TimerTask() { @Override public void run() { //Тут идёт запрос в сеть } } timer.schedule(timerTask, 0, 10000);

Ответ 2



RxJava, с лямбдами Observable.just(true).repeatWhen(t->t.delay(10,TimeUnit.SECONDS)).subscribe(b->{makeNetworkRequest();}); Без лямбд Observable.just(true).repeatWhen(new Func1, Observable>() { @Override public Observable call(Observable t) { return t.delay(10, TimeUnit.SECONDS); } }).subscribe(new Action1() { @Override public void call(Boolean b) { makeNetworkRequest(); } });

Ответ 3



В Android предоставлено множество способов создать таймер. Запрос на сервер через библиотеку okhttp можно сделать синхронным в отдельном потоке. Мой пример с созданием рекурсии, без использования Timer и TimerTask. static boolean stopSyncDownloadData = false; /** * Call method in thread * @param stopSyncDownloadData - boolean */ private void syncDownloadData() { if (stopSyncDownloadData) return; Request request = new Request.Builder().url(url).build(); Response response = client.newCall(request).execute(); // parse response // update UI // delay Thread.sleep(10000); // sleep syncDownloadingData(); } Ниже пример для создания простейшего потока: new Thread(new Runnable() { public void run() { syncDownloadData(); } }).start();

Комментариев нет:

Отправить комментарий