gpt4 book ai didi

Android JobScheduler 每天只运行一次

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:18 25 4
gpt4 key购买 nike

我检查了从 Android API 级别 21 开始可以使用的 JobScheduler API。我想安排一个需要互联网并且每天只运行一次或可选的每周运行一次的任务(如果成功执行)。我没有找到关于这种情况的例子。有人能帮我吗?谢谢。

最佳答案

按照你的问题举个简单的例子,相信会对你有所帮助:

AndroidManifest.xml:

<service android:name=".YourJobService"
android:permission="android.permission.BIND_JOB_SERVICE" />

YourJobService.java:

class YourJobService extends JobService {
private static final int JOB_ID = 1;
private static final long ONE_DAY_INTERVAL = 24 * 60 * 60 * 1000L; // 1 Day
private static final long ONE_WEEK_INTERVAL = 7 * 24 * 60 * 60 * 1000L; // 1 Week

public static void schedule(Context context, long intervalMillis) {
JobScheduler jobScheduler = (JobScheduler)
context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
ComponentName componentName =
new ComponentName(context, YourJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, componentName);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
builder.setPeriodic(intervalMillis);
jobScheduler.schedule(builder.build());
}

public static void cancel(Context context) {
JobScheduler jobScheduler = (JobScheduler)
context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.cancel(JOB_ID);
}

@Override
public boolean onStartJob(final JobParameters params) {
/* executing a task synchronously */
if (/* condition for finishing it */) {
// To finish a periodic JobService,
// you must cancel it, so it will not be scheduled more.
YourJobService.cancel(this);
}

// false when it is synchronous.
return false;
}

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

安排作业后,调用 YourJobService.schedule(context, ONE_DAY_INTERVAL)。它只会在连接到某个网络时被调用,并且在内部一天内一次......即每天一次连接到网络。

观察: Periodic 作业只能调用JobScheduler.cancel(Job_Id) 完成,jobFinished() 方法不会完成它.

观察:如果您想将其更改为“每周一次”- YourJobService.schedule(context, ONE_WEEK_INTERVAL)

obs. Android L 上的定期作业可以在您设置的范围内随时运行一次。

关于Android JobScheduler 每天只运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45724454/

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