我想知道是否可以使用Firebase jobdispatcher来安排网址命中并获取响应以更新数据库。 我希望它每天晚上运行一次。有谁知道这是否可能?
我找不到这样做的好例子。我已经阅读了android文档和https://github.com/firebase/firebase-jobdispatcher-android#user-content-firebase-jobdispatcher-。
我需要使用Firebase jobdispatcher,因为我的目标是API 16.
提前致谢。
更新
这就是我每天安排一次的工作。
public class Student
{
public int StudentID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<StudentTestScore> Scores { get; set; }
}
public class StudentTestScore
{
public int StudentID { get; set; }
public int Score { get; set; }
}
class Program
{
static void Main(string[] args)
{
var students = new List<Student>
{
new Student { StudentID = 1, FirstName = "Brett", LastName = "X" },
new Student { StudentID = 2, FirstName = "John", LastName = "X" }
};
var grades = new List<StudentTestScore> { new StudentTestScore { StudentID = 1, Score = 98 } };
var combined = students.Join(grades, x => x.StudentID, y => y.StudentID,
(x, y) => new
{
Student = $"{x.FirstName} {x.LastName}",
Grade = y.Score
}).ToList();
combined.ForEach(x => Console.WriteLine($"{x.Student} {x.Grade}"));
Console.ReadLine();
}
答案 0 :(得分:16)
您可以使用Firebase JobDispatcher安排定期作业。根据您的要求,您需要创建一个扩展JobService的服务,该服务从url获取响应并更新数据库。然后,您可以使用Firebase JobDispatcher计划此服务。在executionWindow中,您必须指定作业应在理想情况下运行的最早和最晚时间。
如果你想在每24小时后安排工作,你可以使用执行窗口(60 * 60 * 24,60 * 60 * 24 + 60)。然后,如果你想要它应该每晚运行,那么你必须确保它最初是在晚上安排的。为此,您可以在安装应用程序时使用AlarmManager在夜间(仅一次)触发,并使用作业调度程序安排定期作业,或者另一种方式是基于现在的差异和所需的执行您可以使用jobdispatcher安排非递归作业的时间,该作业将在晚上和该作业服务中运行,您可以使用作业调度程序安排重复作业。
ExecutionWindow指定大致时间。它不能保证它会在给定的窗口运行。如果它错过了窗口,作业将在理想情况下最早运行。对于重复作业,一旦作业完成,下一个作业将计算从上次运行时间开始的执行窗口时间。
Job myJob = dispatcher.newJobBuilder()
.setTag("my-unique-tag")
.setRecurring(true)
.setLifetime(Lifetime.FOREVER)
.setService(MyJobService.class)
.setTrigger(Trigger.executionWindow(60*60*24,60*60*24+60))
.setReplaceCurrent(false)
.setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
.setConstraints(Constraint.ON_ANY_NETWORK)
.setExtras(myExtrasBundle)
.build();
dispatcher.mustSchedule(myJob);
答案 1 :(得分:1)
您可以通过告知Job.Builder使用触发器创建定期作业来安排定期作业,该作业具有根据您的需要执行的窗口。