2017-08-31 68 views
0

您好我已經實現了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不會立即引發什麼樣的行爲是這樣嗎?

回答

0

這是正常的行爲。它開始「在(將來)未來的某個地方」。它在我的應用程序中也是這樣。有時馬上,並不總是。

而且,你的要求,像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) –