如何每天在特定时间触发功能

时间:2019-09-16 12:22:42

标签: android android-studio timer

我正在开发Android应用程序。这个程序有几个活动。无论应用程序显示什么活动,我都需要每天凌晨2点在服务器上执行查询。我目前正在使用Timer和TimerTask,如下所示:

Timer timer = new Timer();

TimerTask timerTask = new TimerTask() {
            public void run() {
                makePostToServer()
            }
        };

timer.scheduleAtFixedRate(timerTask, getDate(), 1000 * 60 * 60 * 24); // 24 h


private Date getDate() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, 1);
        cal.set(Calendar.HOUR_OF_DAY, 2);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);

        return cal.getTime();

}

是否有可能由于某种原因在应用程序启动时启动的Timer停止工作? 因为服务器日志并不总是包含有关已执行查询的信息。好像没有发生。
也许每天都有一种更好的方法来调用函数。
最好的问候

2 个答案:

答案 0 :(得分:0)

代替此用途的工作经理非常有效。在这种情况下,您可以使用定期工作管理器

查看此内容以供参考。 https://developer.android.com/topic/libraries/architecture/workmanager

快乐编码!

答案 1 :(得分:0)

在Android中有几种API可用于安排任务:

  1. 警报管理器
  2. 工作计划程序
  3. GCM网络管理器
  4. Firebase Job Dispatcher
  5. 同步适配器

您可以轻松找到很多样本。