的Android的jobscheduler JobService不工作
问题描述:
您好我已经实现了Android的API的jobscheduler这是工作的罚款,直到最近,但由于2/3天,似乎是在工作岗位不一致的行为,进行调度。的Android的jobscheduler JobService不工作
这里是JOBINFO建设者配置:
jobInfo = new JobInfo.Builder(118, new ComponentName(this, LocationJob.class)) .setBackoffCriteria(30000, JobInfo.BACKOFF_POLICY_EXPONENTIAL) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .setExtras(persistableBundle).build();
jobScheduler.schedule(jobInfo);
基本工作是当我触发这个它曾经立即开始作业服务类,但是它不会立即开始现在。
我JobService类:
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class LocationJob extends JobService {
private static final String LOG_TAG = LocationJob.class.getSimpleName();
@Override
public boolean onStartJob(final JobParameters params) {
try {
/* doing some server work in another thread. */
} catch (Exception e) {
Log.v(LOG_TAG, e.toString() + " " + e.getMessage() + " " + e
.getCause());
}
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
我JobService不会立即引发什么样的行为是这样吗?
答
这是正常的行为。它开始“在(将来)未来的某个地方”。它在我的应用程序中也是这样。有时马上,并不总是。
而且,你的要求,像NETWORK_TYPE_ANY,可以在没有网络的时刻推迟它。
从文档:“通常情况下,如果您没有指定工作的最后期限,它可以随时运行,具体取决于JobScheduler内部队列的当前状态,但可能会延迟,直到下一次该设备连接到电源。“ https://developer.android.com/reference/android/app/job/JobScheduler.html
我得到了你的观点,但它使用一次就被安排立即触发。 JobScheduler是否有任何内部队列大小?如果是这样,最大数量是多少,所以我不能相应地安排。 NETWORK_TYPE_ANY说可能的网络连接,它应该尽快安排工作。这就是它应该如何工作的权利。 –
是的,你可能没有网络。即时调度可能是旧版本的低效率。现在它可能会等待,因此它可以批量从不同的应用程序或一些东西的工作。 – Frank
确定,但我有我的网络连接,我上运行它Mashmallow(6.0) –