的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

+0

我得到了你的观点,但它使用一次就被安排立即触发。 JobScheduler是否有任何内部队列大小?如果是这样,最大数量是多少,所以我不能相应地安排。 NETWORK_TYPE_ANY说可能的网络连接,它应该尽快安排工作。这就是它应该如何工作的权利。 –

+0

是的,你可能没有网络。即时调度可能是旧版本的低效率。现在它可能会等待,因此它可以批量从不同的应用程序或一些东西的工作。 – Frank

+0

确定,但我有我的网络连接,我上运行它Mashmallow(6.0) –