重复调用Web服务

时间:2013-12-11 11:39:11

标签: android web-services timer handler

我必须重复调用一个Web服务。两次调用之间的持续时间我分钟.Web服务的参数基于一个微调器值选择。当我选择一个不同的值时,现在这个Web服务在一个调用它自己两次从旋转器中选择第三个项目后,它会在一分钟内调用该服务三次。我需要的是,Web服务应该只在一分钟内调用一次。

final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        handler.post(new Runnable() {
            public void run() {
                try {
                    new FilteredProductionWebAPITask(
                            SpeedometerActivity.this)
                    .execute(branchId);
                    System.out.println("Service:"+counter++ +"Times");
                } catch (Exception e) {
                    // TODO: handle exception
                    new FilteredProductionWebAPITask(
                            SpeedometerActivity.this)
                    .cancel(true);
                    alert(getResources().getString(
                            R.string.noData));
                }

            }
        });
    }

};
timer.schedule(task, 0, 60 * 1000);

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码在每1分钟后调用一次Web服务。您需要在应用启动时启动该方法

mHandler.sendEmptyMessage(CALL_WEB);

private static final int CALL_WEB= 2;

private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

            switch (msg.what) {

                case CALL_WEB:
                    Callwebserviceinasync(spinnervalue);


                        sendMessageDelayed(msg, 60*1000);

                    break;
            }
        }
    };

答案 1 :(得分:-1)

尝试它可能有用

final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        handler.post(new Runnable() {
            public void run() {
                try {
                    new FilteredProductionWebAPITask(
                            SpeedometerActivity.this)
                    .execute(branchId);
                    System.out.println("Service:"+counter++ +"Times");
                } catch (Exception e) {
                    // TODO: handle exception
                    new FilteredProductionWebAPITask(
                            SpeedometerActivity.this)
                    .cancel(true);
                    alert(getResources().getString(
                            R.string.noData));
                }

            }
        });
    }

};

timer.schedule(task, 0, (60 * 1000)/spinnerValue);

spinnerValue为1,2,3 ......