setPeriodic作业被触发两次

问题描述 投票:0回答:1

我有两个具有不同ID的作业以不同的时间间隔运行,发生的情况是在一定时间后两次触发作业。

以下是两个工作

 public JobScheduler getDeltaDownloaderInstance(Context context){
    if(jobScheduler==null){
        jobScheduler = (JobScheduler)context.getSystemService(JOB_SCHEDULER_SERVICE);
    }
    return jobScheduler;
}

public void sync1(){
    getDeltaDownloaderInstance(this);
    ComponentName jobService = new ComponentName(this.getPackageName(), MyServiceOne.class.getName());
    JobInfo jobInfo = new JobInfo.Builder(1,jobService).
            setPersisted(true).
            setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).
            setPeriodic(900000).
            build();
    jobScheduler.schedule(jobInfo);
}

public void sync2(){
    getDeltaDownloaderInstance(this);
    ComponentName jobService = new ComponentName(this.getPackageName(), MyServiceTwo.class.getName());
    JobInfo jobInfo = new JobInfo.Builder(2,jobService).
            setPersisted(true).
            setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).
            setPeriodic(1860000).
            build();
    jobScheduler.schedule(jobInfo);
}

上面的初始化是在我的Application类中编写的,每15分钟将执行第一个作业,每31分钟将执行第二个作业。它可以在一段时间内正常工作,但稍后会有一个作业有两个实例。

服务等级一(服务等级一和两个都具有相同的实现)

public class MyServiceOne extends JobService implements MyListenerClass {

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    return super.onStartCommand(intent, flags, startId);
}


@Override
public boolean onStartJob(JobParameters params) {
    HelperclassOne helper = new HelperclassOne(this,this);
    helper.somemethods();
    return false;
}

@Override
public boolean onStopJob(JobParameters params) {
    return false;
}

@Override
public void onSuccess(String response) {
    System.out.println(response);
}

@Override
public void onError(String response) {
    System.out.println(response);
}
}

在我的服务类中,它调用我的帮助程序类,如果事务成功,则执行一些方法来调用某些事务,然后涉及onSuccess(),如果发生错误则涉及onError()。

观察到的一种情况是,我的作业正在网络之间执行,该作业关闭并且当前作业已停止。之后,在下一个计划中,作业被触发两次。任何帮助都将非常感谢。

java android background-process android-jobscheduler jobservice
1个回答
0
投票

道歉而不是评论,但系统不允许我发表评论。

您是否找到解决该问题的方法?我似乎也有同样的经历。

© www.soinside.com 2019 - 2024. All rights reserved.