Android:以不同的睡眠间隔运行周期性任务

Android:以不同的睡眠间隔运行周期性任务,android,service,alarmmanager,periodic-task,Android,Service,Alarmmanager,Periodic Task,我正在构建一个Android应用程序,它应该在后台通过网络从服务器获取定期更新 响应是一个JSON对象,包含数据和下次更新之前的间隔: { “数据”:[“blah1”、“blah2”、…], “nextUpdateIntervalSeconds”:3600 } 我希望应用程序在nextUpdateIntervalSeconds之后获取下一个更新。在本例中,下一次更新应在一小时后获取。如果网络调用不成功,则应使用默认的nextUpdateIntervalSeconds 在安卓系统中,如何在不同的

我正在构建一个Android应用程序,它应该在后台通过网络从服务器获取定期更新

响应是一个JSON对象,包含数据和下次更新之前的间隔:

{
“数据”:[“blah1”、“blah2”、…],
“nextUpdateIntervalSeconds”:3600
}
我希望应用程序在
nextUpdateIntervalSeconds
之后获取下一个更新。在本例中,下一次更新应在一小时后获取。如果网络调用不成功,则应使用默认的
nextUpdateIntervalSeconds

在安卓系统中,如何在不同的睡眠时间下运行周期性任务?

试试这个

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        getDataFromServer();
    }
}, nextUpdateIntervalSeconds); // in ms
编辑

变量
nextUpdateIntervalSeconds
必须在第一个间隔中有一个值。您应该使用默认值初始化它,如

public long nextUpdateIntervalSeconds = 3000;
试试这个

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        getDataFromServer();
    }
}, nextUpdateIntervalSeconds); // in ms
编辑

变量
nextUpdateIntervalSeconds
必须在第一个间隔中有一个值。您应该使用默认值初始化它,如

public long nextUpdateIntervalSeconds = 3000;

我将在SharedReferences中设置间隔值,并在每次从web服务获取新值时覆盖该值,并在SharedReferences中使用set intervel every time

我将在SharedReferences中设置间隔值,并在每次从web服务获取新值时覆盖该值,并在SharedReferences

我想使用Android的AlarmManager设置每次一次警报,并为我的广播接收器注册一个挂起的内容。在接收到向我的BroadcastReceiver发送的警报广播后,我将启动一个服务来执行ypdate,在更新之后,我将使用更新的间隔设置另一个一次性警报

您可以从这里获取参考:

但他们设置了一个重复报警,您需要将其更改为一次性报警,并在更新数据后再次调用。 更改以下内容

alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP,
            updateTime.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, recurringDownload);
以下

alarmManager.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent);

我想使用Android的AlarmManager设置一次警报,并为我的广播接收器注册一个PendingEvent。在接收到向我的BroadcastReceiver发送的警报广播后,我将启动一个服务来执行ypdate,在更新之后,我将使用更新的间隔设置另一个一次性警报

您可以从这里获取参考:

但他们设置了一个重复报警,您需要将其更改为一次性报警,并在更新数据后再次调用。 更改以下内容

alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP,
            updateTime.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, recurringDownload);
以下

alarmManager.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent);

尝试使用报警管理器。。。但不是重复警报。。。每次执行“从服务器更新代码集”时,下一个警报。。。请记住,设置报警将无法通过引导…请尝试使用报警管理器。。。但不是重复警报。。。每次执行“从服务器更新代码集”时,下一个警报。。。请记住,设置报警将无法在启动后继续。。。