2016-10-20 48 views
3

我嘗試在我的應用程序中實現JobScheduler,但我遇到了一個我無法理解的問題。Android JobScheduler:即使我的設備沒有網絡連接,也會啓動具有網絡約束的JobService。

目標是在我的設備上有互聯網連接可用時啓動服務,時間間隔爲10秒。

所以我使用的jobscheduler這樣:

JobScheduler mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); 
    JobInfo.Builder builder = new JobInfo.Builder(1, new ComponentName(getPackageName(), 
      MyJobService.class.getName())) 
      .setRequiredNetworkType(NETWORK_TYPE_ANY) 
      .setPeriodic(10 * 1000); 


    if (mJobScheduler.schedule(builder.build()) <= 0) { 
     Log.e("gch", "can't Schedule job for MyJobService"); 
    } else { 
     Log.d("gch", "Schedule job for MyJobService"); 
    } 

而且我JobService:

public class MyJobService extends android.app.job.JobService { 
    public MyJobService() { 
    } 

    @Override 
    public boolean onStartJob(JobParameters jobParameters) { 
     Log.d("gch", "onStartJob"); 
     return false; 
    } 

    @Override 
    public boolean onStopJob(JobParameters jobParameters) { 
     Log.d("gch", "onStartonStopJob"); 
     return true; 
    } 

} 

當然,我加入了android:permission="android.permission.BIND_JOB_SERVICE"

如果我理解正確,我JobService應只有當我的設備有網絡時才執行,最多在10秒內執行一次。

但是,我的設備上,我沒有互聯網連接(沒有插入SIM卡,而WIFI是不是能),但我的工作是每10s執行.. 看來NETWORK_TYPE_ANY被忽略。與NETWORK_TYPE_UNMETERED相同的問題。

有人已經面臨這個問題?

非常感謝。

+0

[Jobscheduler API android L]可能的副本(http://stackoverflow.com/questions/27208776/jobscheduler-api-android-l) – Henning

回答