Отправляйте запрос на веб-сервис каждые 5 секунд
Я хочу прослушать базу данных сервера sql, чтобы узнать, есть ли изменения данных в Android, поэтому я хочу отправлять запрос в веб-службу каждые 5 секунд, чтобы узнать о новом значении данных. Как я могу это сделать? Можете привести пример?
4 ответа
Вы можете сделать это с AsyncTask,
public void callAsynchronousTask() {
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
PerformBackgroundTask performBackgroundTask = new PerformBackgroundTask();
// PerformBackgroundTask this class is the class that extends AsynchTask
performBackgroundTask.execute();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(doAsynchronousTask, 0, 50000); //execute in every 50000 ms
}
Подробнее: Как выполнить асинхронную задачу несколько раз через фиксированные промежутки времени
Используйте класс Service и внутри класса Service реализуйте планировщик потоков, который будет отправлять запрос каждые 5 секунд. Ниже приведен фрагмент кода:
public class ProcessingService extends Service {
private Timer timer = new Timer();
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
sendRequest();
}
}, 0, 5000;//5 Seconds
}
@Override
public void onDestroy() {
super.onDestroy();
shutdownService();
}
}
Используйте этот код:
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
// Hit WebService
}
}, 0, 5, TimeUnit.SECONDS);
Опрос вообще не очень хорошая идея. Потому что это создает ненужную нагрузку на сервер. В вашем случае 20 запросов в минуту на пользователя.
Итак, перейдите на механизм толчка. Таким образом, идея будет такой: всякий раз, когда вы получаете push-сообщение, вы вызываете веб-сервис для получения последних данных.
Эта ссылка поможет вам: Push, Don't Poll - Как использовать GCM для обновления приложения