0

我必须在可变时间调用一些 web 服务方法,每次方法运行它都会返回我下一个周期时间。我用计时器尝试过,但第一次调用后,它无法理解新的变量时间。这是昨天问的链接:定时器时间不作为变量改变?

这是示例代码:

private int V_Time = 1;

.
.
.

try {
final Timer V_Timer;
final Handler V_Handler;
V_Timer = new Timer();
V_Handler = new Handler(Looper.getMainLooper());
V_Timer.scheduleAtFixedRate(new TimerTask() {
    public void run() {
        V_Handler.post(new Runnable() {
            public void run() {
            webservice_method();
            V_Time = 2; // it returns from method, not manually right as shown 
                        //and it can be change every time method calls..

            }
        });
    }
}, 0, V_Time * 1000 * 60);
} catch (Exception hata) {

}

它在 1 分钟后第一次工作,但其他人不会改变(例如 2 分钟),它每 1 分钟工作一次。

我希望它正常工作,有定时器或没有定时器和其他任何东西......我想我可以取消定时器,但我想我无法恢复或重新启动它。一定是要做我想做的事,但我不知道怎么做?

我想更改周期时间,每个计时器任务运行从方法返回的内容。

4

1 回答 1

0

你想要达到的目标是不可能的。您必须取消当前任务并使用新间隔重新安排新任务。

private TimerTask mTask = new TimerTask() {

        @Override
        public void run() {
                V_Handler.post(new Runnable() {
                       public void run() {
                       webservice_method();
                       V_Time = 2; // it returns from method, not manually right as shown 
                            //and it can be change every time method calls..
                       V_Timer.cancel();
                        V_Timer.scheduleAtFixedRate(mTask, 0, V_Time * 1000 * 60);

                }
            });

        }
    }

try {
final Timer V_Timer;
final Handler V_Handler;
V_Timer = new Timer();
V_Handler = new Handler(Looper.getMainLooper());
V_Timer.scheduleAtFixedRate(mTask, 0, V_Time * 1000 * 60);
} catch (Exception hata) {

}
于 2013-05-24T08:54:46.207 回答