关于JobScheduler的一般问题

时间:2018-04-14 16:50:35

标签: android android-jobscheduler

在我的应用程序中,我需要每隔15分钟按Geofire更新用户位置,但我对某些参数感到困惑。目前我有

        JobScheduler jobScheduler = (JobScheduler) getActivity().getSystemService(Context.JOB_SCHEDULER_SERVICE);
        JobInfo.Builder builder = new JobInfo.Builder(AppConstants.USER_DATA_UPDATE_JOB_ID, new ComponentName(getActivity().getPackageName(), UserDataUpdateScheduler.class.getName()));
        builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
        builder.setPeriodic(900000);
        builder.setPersisted(true);
        jobScheduler.schedule(builder.build());

究竟是什么指示jobScheduler重新开始工作builder.setPeriodic(900000);jobFinished(params, true);?并且无法理解onStartJobonStopJob返回值的含义。

另外一个问题,在Android O中,后台服务每小时无法多次接收位置更新。那么这几次会有多少次?

2 个答案:

答案 0 :(得分:1)

setPeriodic(long intervalMillis)

指定此作业应使用提供的间隔重复,每个周期不得超过一次。换句话说,此作业必须以指定的间隔重复,以毫秒为单位,9000 = 9秒。

JobFinished

调用此方法通知JobScheduler该作业已完成其工作。当系统收到此消息时,它会释放为该作业保留的唤醒锁。

答案 1 :(得分:0)

setPeriodic(long intervalMillis)

指定此作业应以提供的间隔重复执行,每个周期不超过一次,此方法的最小间隔为15分钟或900000毫秒 还有

JobFinished

完成工作后致电

(如果您的任务很简短,请在onStart方法上写,并在不调用JobFinished方法的情况下返回false)

注意:如果您在jobFinished中定义您的工作周期,则始终返回false