运行任务周期(每天一次/每周一次)
我想定期(即每周/每天一次)执行一些任务(即获取我的网站新闻页面),即使我的应用程序已closures。 可能吗?
是的,您需要查看AlarmManager以设置一个重复出现的“警报”。 这对于设备上的电池寿命更好,因为它不像服务那样在后台不断运行。 报警触发一个广播接收器将执行您的自定义代码。
作为最后一点 – 有报警时间的枚举值,包括每日,半天等等,尽pipe您可以设置实际值。
一个很好的例子可以在以下SOpost中find:
警报pipe理器示例
更新
较新的function已添加到Android。 如果你正在阅读,那么我现在build议你看看GcmNetworkManager 。 这优化了电池寿命,并运行预棒棒糖。 对于棒棒糖,你可以使用JobScheduler 。 我build议通过AlarmManager使用这些类。
我认为最适合的是GcmNetworkManager 。 基本上它具有AlarmManager加持久性所需的所有function,因此重启后可以继续执行作业。
例:
PeriodicTask task = new PeriodicTask.Builder() .setService(MyTaskService.class) .setTag(TASK_TAG_PERIODIC) .setPeriod(5L) .build(); mGcmNetworkManager.schedule(task);
作为另一种select,我正在比较本周:
Calendar cal = Calendar.getInstance(); int currentWeekOfYear = cal.get(Calendar.WEEK_OF_YEAR); SharedPreferences sharedPreferences= this.getSharedPreferences("appInfo", 0); int weekOfYear = sharedPreferences.getInt("weekOfYear", 0); if(weekOfYear != currentWeekOfYear){ SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("weekOfYear", currentWeekOfYear); editor.commit(); // Your once a week code here }
我不是主张这比报警解决scheme更好。 我只是展示了一种不同的方法。