无法在Android中的ScheduledThreadPoolExecutor的帮助下定期运行任务

时间:2019-01-10 17:13:43

标签: java android performance android-studio

我的应用程序是启动器应用程序,我需要定期运行任务,因此我在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);

1 个答案:

答案 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方法中。