2017-07-16 52 views
0

我有一个JobSchudaler启动通知功能,我添加了一个默认值,其中90分钟,我也允许用户选择他设置的时间段,并将它存储在数据库表中。但是,因为我在应用程序启动后将主Job中的JobSchualer写入并且Oncreate开始运行,它将长时间保持默认值运行,问题是如何退出onCreate默认值并强制它重新检查setPeriod 值。JobSchudaler更新值

这里是TaskSchudaler:

protected void TaskSchudaler() { 
    DatabaseHelper databaseHelper = new DatabaseHelper (this); 
    ProfileHelper profileHelper = databaseHelper.getTimeReminder(); 
    GcmNetworkManager networkManger = GcmNetworkManager.getInstance(this); 

    if(databaseHelper.checkReminderTable() == true){ 
     PeriodicTask taskOne = new PeriodicTask.Builder() 
       .setService(JobSchualerHandler.class).setPeriod(5500).setFlex(20).setRequiresCharging(false).setTag("Task First").build(); 
     networkManger.schedule(taskOne); 
     Log.w ("Empty", "its Says Empty"); 

    }else if (databaseHelper.checkReminderTable() == false){ 
     PeriodicTask taskOne = new PeriodicTask.Builder() 
       .setService(JobSchualerHandler.class).setPeriod(profileHelper.TimePeriod*60).setFlex(20).setRequiresCharging(false).setTag("Task First").build(); 
     networkManger.schedule(taskOne); 
     Log.w ("Not Empty", String.valueOf (profileHelper.TimePeriod*60)); 

    } 
} 

仅供参考。 SetPeriod的插入发生在另一个片段中。

回答

0

取消所有与周期性任务关联的作业,并以新的时间间隔重新启动它。 您可以使用cancelAllTasks()方法取消与服务关联的所有任务。

其他方法将使用JobSchedule执行您的定期任务。 具有相同ID的作业计划程序将使用新值更新现有作业。

+0

在上面的代码中,我试图确保它是相同的ID。所以我认为唯一剩下的就是取消并重新启动周期性任务,这里有两个问题,我该如何确切地做到这一点。第二,如何在新的价值插入时回想起它 –