我必须重复调用一个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);
答案 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 ......