每10分钟在后台执行数据库操作

时间:2013-04-05 21:40:24

标签: android background timer

我想每10分钟在后台执行数据库操作。什么是最好的方法?

也许:

  • 主题:如何?
  • 服务:非常复杂?
  • AsyncTasks:太长时间

我目前的做法:

CountDownTimer clearDBsCountDownTimer = new CountDownTimer(600000, 600000) {
    @Override
    public void onFinish() {
        ClearDBs();
    }
};

private void ClearDBs() {
    // Clearing databases here
    clearDBsCountDownTimer.start();
}

但它不起作用:我认为因为ClearDBs()方法等待CountDownTimer完成,对吧?

但如何正确地做到这一点:任何想法?

2 个答案:

答案 0 :(得分:2)

AlarmManager + IntentService是最干净的方法。

使用AlarmManager,您可以安排定期的IntentServices。

IntentService是一种在后台线程(onHandleIntent()调用)中执行特定操作并死亡的服务。

他们完美地组合在后台执行定期工作。

检查例如this post

请注意这种操作,因为它们可能导致电池耗尽(并且有愤怒的用户)。

根据@Squonk的建议,您可以使用setRepeating(...)setInexactRepeating(...)来安排定期活动。

如果您只想在应用处于前台时执行此后台任务,您仍然可以取消调用manager.cancel()的事件

答案 1 :(得分:2)

创建bound service会是一个好主意。

对于线程使用ScheduledExecutorService