gpt4 book ai didi

android - 如何在给定时间运行作业服务

转载 作者:行者123 更新时间:2023-11-29 01:10:01 25 4
gpt4 key购买 nike

我想创建一个提醒应用程序,在给定时间通知用户,我想使用作业调度程序 api 来实现这个假设我想在上午 9 点和 12 点运行该服务应该在以下代码中添加什么来实现这个。

public void startJobService(){

GooglePlayDriver driver = new GooglePlayDriver(this);
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(driver);

Bundle myExtrasBundle = new Bundle();
myExtrasBundle.putString("some_key", "some_value");

Job myJob = dispatcher.newJobBuilder()
.setService(jobservice.class)
.setTag("unique-tag")
.setExtras(myExtrasBundle)
.build();

dispatcher.mustSchedule(myJob);

}

//this is the JobService class

public class jobservice extends JobService{

private static final String TAG = "jobservice";

@Override
public boolean onStartJob(JobParameters job) {

Log.d(TAG, "onStartJob: "+job.getExtras());

return true;
}

@Override
public boolean onStopJob(JobParameters job) {
return false;
}
}

最佳答案

很遗憾JobService好像没有提供这个api。您可以做两件事:

  • 使用警报管理器在您需要
  • 时触发作业服务
  • 经常为您提供求职服务(比如说每小时一次)。然后检查当前时间是否在您想要的时间间隔内。如果是,则继续,如果否,则中止作业。

例如:

final Job job = dispatcher.newJobBuilder()
.setService(MyService.class)
.setTag(MyService.class.getName())
.setRecurring(true)
.setLifetime(Lifetime.FOREVER)
.setTrigger(Trigger.executionWindow(HOUR, 2 * HOUR))
.setReplaceCurrent(false)
.setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
.build();

然后在您的工作服务中:

@Override
public boolean onStartJob(JobParameters job) {
if (!nowIsInDesiredInterval()) {
Timber.i("Now is not inside the desired interval. Aborting.");
return false;
}
// else execute your job
// .....
return false;
}

关于android - 如何在给定时间运行作业服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com