【发布时间】:2016-10-21 15:58:11
【问题描述】:
我尝试在我的应用中实现 JobScheduler,但我遇到了一个我无法理解的问题。
目标是在我的设备上有互联网连接时启动服务,间隔时间为 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)但我的工作每 10 秒执行一次。 似乎 NETWORK_TYPE_ANY 被忽略了。 NETWORK_TYPE_UNMETERED 也有同样的问题。
有人已经面临这个问题了吗?
非常感谢。
【问题讨论】:
标签: android android-jobscheduler