【问题标题】:How to set timer to call a function every n minutes?如何设置定时器每隔 n 分钟调用一次函数?
【发布时间】:2013-04-17 12:16:13
【问题描述】:

我想在 Android 应用程序中设置一个计时器,该计时器将在用户登录时每 15/30/45 和 n 分钟后调用一个函数。但它也会在用户注销时停止计时器。如果用户再次登录,计时器将从开始开始。我希望将该选项(15/30/45/n miutes)保存在数据库中,以便在同步后更新列表。

Timer 是一个好方法还是我需要使用警报服务?还是需要什么系统服务?

是否可以将本地电话数据库存储中的先前文档/文件更改为通过 Web 服务器接收的新文档?是否需要任何系统服务?

【问题讨论】:

  • 您想使用AlarmManager 处理这种量级的延迟,并根据您的需要使用RTCRTC_WAKEUP 选项。除此之外,很难说“用户登录/注销”是什么意思。无论哪种方式,都不要在 Android 上使用Timer,这几乎总是错误的方式。无需服务,因为AlarmManager 会为您处理一切。

标签: android android-sqlite android-alarms


【解决方案1】:

使用以下代码每 15/30/45 调用一次您的函数

 final Handler handler = new Handler();
Timer    timer = new Timer();
    TimerTask doAsynchronousTask = new TimerTask() {       
        @Override
        public void run() {
            handler.post(new Runnable() {
                @SuppressWarnings("unchecked")
                public void run() { 
                   try {
                        "Your function call  " 
                       }
                 catch (Exception e) {
                        // TODO Auto-generated catch block
                    }
                }
            });
        }
    };
    timer.schedule(doAsynchronousTask, 0, "Timer value"); 

【讨论】:

  • 最后一行的“定时器值”需要替换成整数。
  • 使用倒数计时器会更节省内存
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 2018-01-17
相关资源
最近更新 更多