gpt4 book ai didi

java - Android jobScheduler 不会因 jobFinished(params, false) 而停止

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:55 24 4
gpt4 key购买 nike

我正在尝试创建一个 jobService。这是 onStartJob() 的样子。

@Override
public boolean onStartJob(JobParameters params) {
Log.d(TAG, "onStartJob");
Log.d(TAG, "Params= " + params.getJobId());
param = params;
jobFinished(params, false);
//startAsync();
return true;
}


@Override
public boolean onStopJob(JobParameters params) {
Log.d(TAG, "onStopJob");
return false;
}

这是应该启 Action 业的代码。

public void startJobScheduler(){
Log.d(TAG, "inside startJobScheduler");
Activity activity = this.cordova.getActivity();
Context context = activity.getApplicationContext();


mJobScheduler = (JobScheduler)context.getSystemService(Context.JOB_SCHEDULER_SERVICE );
JobInfo.Builder job = new JobInfo.Builder(111, new ComponentName(context, JobSchedulerService.class));

job.setPeriodic(60000);
Log.d(TAG, "before mJobScheduler.schedule(job.build())");
if( mJobScheduler.schedule( job.build() ) <= 0 ) {
Log.d(TAG, "job schedule failed");
}
Log.d(TAG, "333");
}

我无法让它停止。它只是每 1-5 分钟持续发射一次。我将 jobFinished(params, false) 放在 onStartJob() 中,并注释掉任务以尝试在它开始后立即将其杀死,但它一直在发射。似乎 jobFinished() 触发了一些东西,因为 onDestroy() 被调用并且我的服务被销毁,但随后另一个作业以相同的 ID 进来并重新启动它。

我在 list 中有 BIND_JOB_SERVICE,就像每个示例所示。

关于为什么 jobFinished(params, false) 似乎没有终止 setPeriodic(60000) 的任何想法?

最佳答案

好吧,如果其他人有这个问题,我想通了。

jobFinished() 不会停止您设置的周期性时间继续进行。它只是告诉工作你已经完成,释放唤醒锁,所以 Android 不必强行终止工作。

我必须做的是在我的服务中重新创建 jobScheduler 并调用 cancelAll()。您显然也可以调用 cancel(job_id)。

jobScheduler = (JobScheduler)this.getSystemService(Context.JOB_SCHEDULER_SERVICE );
jobScheduler.cancelAll();

关于java - Android jobScheduler 不会因 jobFinished(params, false) 而停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37488660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com