在我的应用程序中,我需要每隔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);
?并且无法理解onStartJob
和onStopJob
返回值的含义。
另外一个问题,在Android O中,后台服务每小时无法多次接收位置更新。那么这几次会有多少次?
答案 0 :(得分:1)
setPeriodic(long intervalMillis)
指定此作业应使用提供的间隔重复,每个周期不得超过一次。换句话说,此作业必须以指定的间隔重复,以毫秒为单位,9000 = 9秒。
JobFinished
调用此方法通知JobScheduler该作业已完成其工作。当系统收到此消息时,它会释放为该作业保留的唤醒锁。
答案 1 :(得分:0)
setPeriodic(long intervalMillis)
指定此作业应以提供的间隔重复执行,每个周期不超过一次,此方法的最小间隔为15分钟或900000毫秒 还有
JobFinished
完成工作后致电
(如果您的任务很简短,请在onStart方法上写,并在不调用JobFinished方法的情况下返回false)
注意:如果您在jobFinished中定义您的工作周期,则始终返回false