Android:以不同的睡眠时间间隔运行周期性任务
我正在构建一个Android应用程序,它应该在后台从服务器通过网络获取定期更新。Android:以不同的睡眠时间间隔运行周期性任务
的响应是一个JSON对象同时包含数据和时间间隔,直到下一次更新:
{
"data": ["blah1", "blah2", ...],
"nextUpdateIntervalSeconds": 3600
}
我想应用nextUpdateIntervalSeconds
后读取下一更新。在这个例子中,下一次更新应该在一个小时后提取。如果网络呼叫不成功,则应使用默认的nextUpdateIntervalSeconds
。
如何在Android中使用不同的睡眠时间运行周期性任务?
试试这个;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
getDataFromServer();
}
}, nextUpdateIntervalSeconds); // in ms
编辑
你的可变nextUpdateIntervalSeconds
必须具有在第一间隔的值。你应该使用你的默认值来初始化它;
public long nextUpdateIntervalSeconds = 3000;
后延迟1小时间隔...坏主意...... – Selvin 2014-09-23 09:19:19
我会设置在sharedPreferences的区间值,每一次我从网上servieces得到新的值,并使用设置有限区间不断从sharedPreferences
时间我想用Android的AlarmManager设定一个时间覆盖该值每次都会发出一次警报,并为我的BroadcastReceiver注册一个PendingIntent。在收到广播到我的BroadcastReceiver的警报后,我会启动一个服务来执行ypdate,并且在更新之后,我会用更新的时间间隔设置另一个一次警报。
你可以从这里乘坐参考:http://code.tutsplus.com/tutorials/android-fundamentals-scheduling-recurring-tasks--mobile-5788
但他们已经成立,你需要改变一个时间报警和更新数据后再次调用它循环闹铃。 更改以下
alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP,
updateTime.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, recurringDownload);
以下
alarmManager.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent);
尝试使用报警经理 – 2014-09-23 09:23:27
...但不重复报警......每次执行从设置一个报警服务器代码更新时间.. 。记住,设置闹钟将无法生存引导... – Selvin 2014-09-23 09:26:45