我希望alarmManager 在每个月的 5 日下午 3 点执行一项任务。我该怎么做?
首次启动取决于用户安装应用程序的时间。好的,我可以做一些数学计算,计算下一个月的下一个 5 号需要多少毫秒,但我希望有更简单的方法
重复选项让我很头疼。我只能设置一个固定的间隔。但是两个月之间的时间并不固定,因为有时我有 30 天,有时是 31 天(更不用说 2 月了)。
我将如何做到最好?
问候,A。
我希望alarmManager 在每个月的 5 日下午 3 点执行一项任务。我该怎么做?
首次启动取决于用户安装应用程序的时间。好的,我可以做一些数学计算,计算下一个月的下一个 5 号需要多少毫秒,但我希望有更简单的方法
重复选项让我很头疼。我只能设置一个固定的间隔。但是两个月之间的时间并不固定,因为有时我有 30 天,有时是 31 天(更不用说 2 月了)。
我将如何做到最好?
问候,A。
你可以这样做更简单,看看 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