每5秒向Web服务发送一次请求

时间:2014-09-26 11:23:40

标签: android

我想听sql server数据库知道android中是否有数据更改所以我想每5秒向web服务发送一次请求以了解新的数据值。我该怎么做?你能举个例子吗?

4 个答案:

答案 0 :(得分:17)

你可以使用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
}

更多:How to execute Async task repeatedly after fixed time intervals

答案 1 :(得分:1)

使用Service类并在服务类中实现将每5秒发送一次请求的线程调度程序。下面是ecode片段:

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();

}

}

答案 2 :(得分:0)

使用此代码:

    ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
    scheduler.scheduleAtFixedRate(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            // Hit WebService
        }
    }, 0, 5, TimeUnit.SECONDS);

答案 3 :(得分:0)

轮询通常不是一个好主意。因为它会在服务器中造成不必要的负在您的情况下,每个用户每分钟20个请求。

所以选择Push Mechanism。所以这个想法就是这样,每当你收到推送消息时,你都会调用web服务来获取最新的数据。

此链接可以帮助您:Push, Don’t Poll – How to Use GCM to Update App