android alarmmanager每个月开始一次

时间:2011-03-31 14:55:42

标签: android timer repeat alarmmanager timertask

我希望alarmManager每月5日下午3点执行一项任务。我该怎么做?

  • 首次启动取决于用户安装应用程序的时间。好吧,我可以做一些数学计算一下这个月的下一个5点需要多少毫秒,但我希望有一个更简单的方法

  • 重复选项给我带来了真正的头痛。我只能设置一个固定的intervall。但两个月之间的时间并不固定,因为有时我有30天,有时候31天(更不用说2月份)。

我最好怎么做?

此致 甲

1 个答案:

答案 0 :(得分:0)

你可以更简单地做到这一点,看看Date类: <击> http://developer.android.com/reference/java/util/Date.html

<击>

尝试类似Pseudo:

// This month 5th
Date date = new Date();
date.setDay(5);
// Next month the 5th
Date nextDate = new Date();
nextDate.setDay(5);
nextDate.setMonth(date.getMonth()+1);

<击> 当你到了年底时,你会遇到问题,但问题比现在少。

还有其他Date API,有些会为您解决年份问题。只是环顾四周。

修改

注意到已弃用使用日历:

http://developer.android.com/reference/java/util/Calendar.html

Calendar now = Calendar.getInstance();
now.setField(Calendar.DAY_OF_MONTH, 5);
// Next month the 5th
Calendar nextDate = new = Calendar.getInstance();
nextDate.setField(Calendar.DAY_OF_MONTH, 5);
nextDate.setField(Calendar.MONTH_OF_YEAR, date.getField(Calendar.MONTH_OF_YEAR)+1); // issues in december