gpt4 book ai didi

android - 如果应用程序被终止,作业计划程序将不起作用

转载 作者:行者123 更新时间:2023-12-02 16:26:40 24 4
gpt4 key购买 nike

我已经查看了许多其他主题。然而,这些似乎都没有帮助。

我需要设置每天下午 3 点运行的作业调度程序。

这是我的服务类别:

public class AttendanceCheckScheduler extends JobService {
private AttendanceCheckTask mAttendanceCheckTask;

private static final String TAG = "AttendanceCheckScheduler";

@Override
public boolean onStartJob(JobParameters params) {

mAttendanceCheckTask = new AttendanceCheckTask();
mAttendanceCheckTask.execute();
jobFinished(params, false);
return true;
}

@Override
public boolean onStopJob(JobParameters params) {

mAttendanceCheckTask.cancel(true);
return false;
}

private class AttendanceCheckTask extends AsyncTask<Void, Void, Void> {

@Override
protected Void doInBackground(Void... params) {
// some long running task...
Toast.makeText(getApplicationContext(), "Task run", Toast.LENGTH_SHORT).show();

return null;
}

@Override
protected void onPostExecute(Void s) {
super.onPostExecute(s);
}
}
}

这就是我在 ActivityHome 中安排作业的方式。

public class ActivityHome extends AppCompatActivity {

private static final int JOB_ID = 100;
private JobScheduler jobScheduler;
protected JobInfo jobInfo;

private static final String TAG = "ActivityHome";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);

// other irrelevant codes here...

ComponentName componentName = new ComponentName(this, AttendanceCheckScheduler.class);
JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, componentName);

builder.setPeriodic(5000); // every 5 seconds for testing purpose...
builder.setPersisted(true);

jobInfo = builder.build();

jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(jobInfo);

Toast.makeText(this, "job scheduled", Toast.LENGTH_LONG).show();
}
}

一切似乎都工作正常,我按照上面的设置每 5 秒收到一次 Toast 消息 Task run

但是当应用程序被终止(通过清除多任务窗口中的所有任务)时,我停止接收 toast 消息。

即使应用程序被终止,我如何保持它运行?

P.S:我想要每天下午 3 点执行一次任务。

最佳答案

对于当你的应用程序被杀死时长时间后台任务,你需要实现AlarmManagerWorkManagerWorkManager 处于测试阶段,但现在仅适用于 Android X,只需实现依赖项并从 google 复制粘贴 WorkManager 类代码并放置您的任务即可。

WorkManager最新依赖项:

 implementation "androidx.work:work-runtime:2.2.0"

关于android - 如果应用程序被终止,作业计划程序将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46771303/

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