【发布时间】:2018-01-08 00:35:23
【问题描述】:
我正在使用 JobScheduler 每 15 分钟发送一封电子邮件。 JobScheduler 安排在 MainActivity onCreate 中,因此每次打开主要活动时,都会发送电子邮件。但 15 分钟后,一次只发送一封电子邮件。我希望该动作每 15 分钟发生一次,而不是每次调用 MainActivity 的 onCreate 时发生一次。
ComponentName componentName = new ComponentName(getApplicationContext(), JobSchedulerService.class);
JobInfo jobInfo = new JobInfo.Builder(1, componentName).setPeriodic(900000).setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).build();
JobScheduler jobScheduler =
(JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(jobInfo);
这是我在 jobService 类中的 onStart
public boolean onStartJob(JobParameters params) {
this.params = params;
String filename = "TodaysRecords.csv";
this.dbHandler = new MyDBHandler(this, null, null, 1);
File recordsFile = dbHandler.exportDB(getApplicationContext().getFilesDir(), filename);
String receiverEmail = dbHandler.returnEmail();
String[] recipients = { receiverEmail };
SendEmailAsyncTask email = new SendEmailAsyncTask();
//email.activity = this;
email.m = new Mail("someemail", "password");
email.m.set_from("someemail");
email.m.setBody("Attached is today's records from in&out android application");
email.m.set_to(recipients);
email.m.set_subject("In&Out Records");
try {
email.m.addAttachment(recordsFile.getAbsolutePath().toString());
} catch (Exception e) {
e.printStackTrace();
}
email.execute();
return false;
}
【问题讨论】:
-
您是否在您的
postExecute上致电jobFinished?此外,您可以将调度从 mainactivity 移动到应用程序类,以避免每次打开应用程序时都启动它。
标签: android android-jobscheduler