1

在我的应用程序中的大多数活动中,都有一个标签 - 在气流标题上。本质上,我需要在广播结束并且另一个广播开始时对其进行更新,并且我对此有时间表。我可以以固定的速率更新数据,比如每分钟一次,但我觉得这太过分了。

我想安排特定时间的更新;每次更新后,我需要安排下一个。广播的时间范围不同。

什么是最适合这个问题的?Handler.postDelayed、ScheduledExecutorService.schedule 还是别的什么?AlarmManager 可能有点矫枉过正,因为如果应用程序没有运行,我不需要更新任何数据。

ps 时间范围不固定,所以我必须在每次更新时更改计划时间。

谢谢。

4

3 回答 3

2

我会说使用 aHandler.postDelayed是一个更好的选择,因为您可以改变延迟。使用任何类型的 Timer 都与“可变长度”要求相冲突。

于 2013-02-13T09:28:46.653 回答
0

您可以在这里使用线程定期更新数据,该线程将运行 2 秒,通过在循环中调用此函数,您可以定期更新内容

Strinh hello="HI";
    final int _splashTime = 2000; // time to display the splash screen in ms

    Thread splashTread = new Thread() {
        @Override
        public void run() {
            try {
                int waited = 0;
                while(_active && (waited < _splashTime)) {
                    sleep(100);
                    if(_active) {
                        waited += 100;
                    }                      
                }

            } 
            catch(InterruptedException e) {
            } 
            finally {
                finish();
               hello="HI2";
                stop();
            }
        }
    };
    splashTread.start();

这里字符串 hello 将在 2 秒内从 HI 变为 HI2

希望这可以帮助你

于 2013-02-13T09:46:06.853 回答
0

好吧,我想Timer在这种情况下是最好的选择。与TimerTask一起使用。

于 2013-02-13T09:25:41.407 回答