我想定期运行一些任务(例如获取我的网站新闻页面),即使我的应用程序关闭了。这是否可能?
是的,你需要查看AlarmManager来设置重复的“Alarm”。这对设备的电池寿命更好,因为与服务不同,它不会在后台持续运行。 Alarm触发广播接收器,该接收器将执行您的自定义代码。
最后一点 - 有用于定时Alarm的枚举值,包括每天,半天等等,尽管您可以设置实际值。
在以下SO帖子中可以找到一个很好的例子:
更新
Android添加了新功能。如果您正在阅读本文,则建议您现在查看GcmNetworkManager。这优化了电池寿命,并可用于Lollipop之前。从Lollipop开始,您可以使用JobScheduler。我建议使用这些类而不是AlarmManager。
PeriodicTask task = new PeriodicTask.Builder()
.setService(MyTaskService.class)
.setTag(TASK_TAG_PERIODIC)
.setPeriod(5L)
.build();
mGcmNetworkManager.schedule(task);
GcmNetworkManager
。顺便说一下,我已经点赞了。 - Graham Smith作为替代方案,我正在比较本周:
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
}
我并不是在主张这种方法比警报方案更好,我只是展示了一种不同的做法。