1

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

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

  • 重复选项让我很头疼。我只能设置一个固定的间隔。但是两个月之间的时间并不固定,因为有时我有 30 天,有时是 31 天(更不用说 2 月了)。

我将如何做到最好?

问候,A。

4

1 回答 1

0

你可以这样做更简单,看看 Date 类:http: //developer.android.com/reference/java/util/Date.html

并尝试类似的东西,伪:

// 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);

到年底时你会遇到问题,但问题比现在要少。

还有其他日期 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
于 2011-03-31T15:22:11.183 回答