SetRequired ...在安排JobService时不工作

时间:2017-05-08 19:51:18

标签: c# android xamarin android-jobscheduler

我创建了一个由JobScheduler执行的JobService ... 它非常简单,只需使用Log.Info()在控制台中记录一些东西:

public override bool OnStartJob(JobParameters @params)
    {

        Log.Info("JOBSERVICE", "FOI");
        JobFinished(@params, false);
    }

然后我以这种方式安排这项服务:

public void InitService(int status)
    {
        JobScheduler mJobScheduler = (JobScheduler)cx.GetSystemService(Context.JobSchedulerService);

        JobInfo.Builder builder = new JobInfo.Builder(1, new ComponentName(cx, Java.Lang.Class.FromType(typeof(JobSchedulerSyncService))));
        builder.SetPeriodic(30000);
        builder.SetPersisted(true);
        builder.SetRequiresDeviceIdle(true);

        if (status == Constants.SYNC_WIFI)
            builder.SetRequiredNetworkType(NetworkType.Unmetered);
        else if (status == Constants.SYNC_WIFI_3G)
            builder.SetRequiredNetworkType(NetworkType.Any);
        else
            builder.SetRequiredNetworkType(NetworkType.Unmetered);

        mJobScheduler.Schedule(builder.Build());
    }

问题是,所有参数似乎都不起作用,即使我没有连接到互联网,我的服务也在运行,当我的机器人没有闲置时...

我错过了什么吗? 非常感谢你!

1 个答案:

答案 0 :(得分:0)

在Android N中,您必须调用

 builder.setPeriodic(interval,flex );//interval>15 minutes ;flex >5 minutes.

让它发挥作用。