如何在24/7服务上设置倒数计时器

时间:2013-10-25 09:35:21

标签: android service countdowntimer

我最近刚刚学习并开发了一个小部件。据我所知,小部件每30-60分钟就有一次自动更新。现在我被要求将自动更新减少到5分钟。

所以我已经考虑创建另一个Service Thread,它每隔5分钟不断运行倒数计时器,并刷新应用程序以检查是否存在任何可能的错误。这些错误实际上是ping测试结果。如果服务器关闭,我将执行Toast Message以通知用户此服务器已关闭。

那么,我该怎么做呢?或者是否有更好的建议。请赐教。

2 个答案:

答案 0 :(得分:1)

这可以帮助你:

好友使用TimerTask在特定时间间隔后调用

Timer timer = new Timer();
timer.schedule(new UpdateTimeTask(),1, TimeInterval);

class UpdateTimeTask extends TimerTask {

        public void run() 
           {        
              // code here
           }

        }

或者您也可以使用AlaramManager

像这样设置AlarmManager

private static final int REPEAT_TIME_IN_SECONDS = 60; //repeat every 60 seconds

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(),
            REPEAT_TIME_IN_SECONDS * 1000, pendingIntent);

如果您想要在电话关闭时唤醒电话,请将AlarmManager.RTC更改为AlarmManager.RTC_WAKEUP。有关AlarmManager Click Here

的更多信息

这两个参数也意味着您的闹钟时间将为System.currentTimeMilis(),这是UTC的时间。

答案 1 :(得分:0)

我认为最好将 runnable postDelayed 一起使用,如下所示:

private Handler handler = new Handler();
private Runnable runnable = new CustomRunnable();

private class CustomRunnable implements Runnable {
        public void run() {
            // your logic
          handler.postDelayed(runnable, REFRESH_TIME);
        }
    }

REFRESH_TIME - 以毫秒为单位刷新的常量。只需运行一次 handler.postDelayed(runnable,REFRESH_TIME); ,你想要的地方。