我的应用程序是启动器应用程序,我需要定期运行任务,因此我在ScheduledThreadPoolExecutor的帮助下编写了代码,但我注意到有时它可以正常工作,但有时它没有运行,我不知道为什么发生。重新启动设备后,它可以正常工作,但在某些设备中,它无法启动。
ScheduledThreadPoolExecutor executor_ = new ScheduledThreadPoolExecutor(1);
executor_.scheduleWithFixedDelay(new
Runnable() {
@Override
public void run() {
try {
//Hitting an api
}
}catch(
Exception e)
{
e.printStackTrace();
}
}
},10000,6000000,TimeUnit.MILLISECONDS);
答案 0 :(得分:1)
取决于您的Android版本,但是如果您想定期运行任务,而不管用户是否打开应用程序,使用JobScheduler通常更适合电池使用,尽管还有其他选择({{3} }。例如:
((JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE)).schedule(new JobInfo.Builder(MY_JOB_ID, new ComponentName(context, MyJobService.class))
.setPeriodic(6000000)
.build());
然后,调用API的代码将位于MyJobService类的onStartJob方法中。