我嘗試在我的應用程序中實現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相同的問題。
有人已經面臨這個問題?
非常感謝。
[Jobscheduler API android L]可能的副本(http://stackoverflow.com/questions/27208776/jobscheduler-api-android-l) – Henning