2016-10-20 47 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

回答