【问题标题】:Best way to set repeating task设置重复任务的最佳方法
【发布时间】:2010-11-01 15:08:57
【问题描述】:

我的应用程序中有一个方法,我希望根据用户的选择重复调用该方法。就像用户选择每小时一样,活动会触发每小时调用的方法。我想知道安排这个重复任务的最佳方式。

我一直在尝试使用 Timers 和 Timer 任务,但由于某种原因,当我使用 java 日历类时它似乎不起作用,如下所示:

    Calendar c1 = Calendar.getInstance();
          c1.add(Calendar.SECOND, 30);    
  updateTimer.scheduleAtFixedRate(cleanCompletedCache, c1.getTimeInMillis(),hour );

从我所阅读的内容来看,处理程序不适合这种多次重复的任务。我是否必须为此使用警报管理器,为什么上面的代码不能正确执行?谢谢

【问题讨论】:

  • 我遇到了类似的问题,所以我只使用以下代码在特定时间继续设置新调用(SHORT_UPDATE_INTERVAL 是我创建的变量而不是系统常量)。 timer.schedule(new TimerTask() { @Override public void run() { // 此处调用程序 timerEvent(); } }, SHORT_UPDATE_INTERVAL);
  • 谢谢会检查那个方法。但我想我也看到了一种使用处理程序的方法。还是谢谢

标签: android android-asynctask android-alarms


【解决方案1】:

您需要 AlarmManager 和它的 setRepeating 或 setInexactRepeating 调用。

您在那里安排一个 Intent 交付给您的应用程序,并编写一个 Intent 接收器来处理它。这样,您的应用程序的激活完全是 Android 系统的责任,您的应用程序不需要运行整个小时,它只是等待激活。

如果出于某种奇怪的原因,您需要在计时器调用之间运行代码,则需要保持后台服务运行,但仍需使用 AlarmManager 来获取唤醒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 2013-10-19
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多