我想在每个月的第一天在固定时间(比如早上8点)从我的Android应用程序运行一个函数。该功能将根据用户的偏好提供通知或开始通过互联网下载文件(两者都已经处理)或什么也不做。
我尝试将BroadcastReceiver与动作android.intent.action.DATE_CHANGED
一起使用,但我读到只有当用户手动更改日期时它才会被触发(尽管它曾经工作过前2-3次我尝试然后停止工作)。我认为AlarmManager能够做我需要做的事情,但却无法弄清楚如何实现它。
无论我的应用程序是否处于活动/运行状态,都应该运行。这样做的最佳方式是什么?任何支持代码将不胜感激。
答案 0 :(得分:0)
启动时启动服务。在服务中,您可以在另一个线程中检查日期。
答案 1 :(得分:0)
使用闹钟
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis()/*now*/, TIME_REPEATING, pendingIntent);
TIME_REPEATING将是您对该月第一天的计算,以及pendingIntent您的服务来运行任务。
独特的努力工作将知道需要多少时间才能传递到下个月的第一天。但是计算它是可能的,也是非常可靠的。