wake-up-neo.com

Android - Firebase-Auftragsdispatcher

Ich würde gerne wissen, ob es möglich ist, Firebase jobdispatcher zu verwenden, um einen URL-Treffer zu planen und die Antwort zu erhalten, um die Datenbank zu aktualisieren. Ich möchte, dass es einmal pro Tag in der Nacht ausgeführt wird. Weiß jemand, ob das möglich ist? 

Ich kann kein gutes Beispiel dafür finden. Ich habe bereits Android-Dokumentation gelesen und https://github.com/firebase/firebase-jobdispatcher-Android#user-content-firebase-jobdispatcher .

Ich muss Firebase jobdispatcher verwenden, da ich API 16 als Ziel habe. 

Danke im Voraus.

UPDATE 

So habe ich es einmal täglich gemacht. 

final int periodicity = (int) TimeUnit.HOURS.toSeconds(24);
final int toleranceInterval = (int) TimeUnit.HOURS.toSeconds(1);

FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this));
Job job = dispatcher.newJobBuilder()
        .setService(UpdateTVJobService.class)
        .setTag(JOB_TAG)
        .setTrigger(Trigger.executionWindow(periodicity, periodicity + toleranceInterval))
        .setLifetime(Lifetime.FOREVER)
        .setRecurring(true)
        .setReplaceCurrent(true)
        .build();

int result = dispatcher.schedule(job);

if (result != FirebaseJobDispatcher.SCHEDULE_RESULT_SUCCESS) {
    Log.d("JOB_TAG", "ERROR ON SCHEDULE");
}
13
Sol

Sie können wiederkehrende Jobs mit Firebase JobDispatcher einplanen. Je nach Anforderung müssen Sie einen Dienst erstellen, der JobService erweitert, um die Antwort von URL zu erhalten und die Datenbank zu aktualisieren. Anschließend können Sie diesen Dienst mithilfe von Firebase JobDispatcher einplanen. Im Ausführungsfenster müssen Sie den frühesten und spätesten Zeitpunkt angeben, zu dem der Job unter idealen Bedingungen ausgeführt werden soll.

Wenn Sie den Job alle 24 Stunden planen möchten, können Sie das Ausführungsfenster (60 * 60 * 24,60 * 60 * 24 + 60) verwenden. Wenn Sie möchten, dass der Job jede Nacht ausgeführt werden soll, müssen Sie sicherstellen, dass dies der Fall ist anfänglich nachts geplant. Damit Sie AlarmManager anfangs nachts (nur einmal) ausführen können, wenn die App installiert ist, und einen wiederkehrenden Job mit dem Job-Dispatcher OR planen, können Sie den abweichenden und den gewünschten Unterschied festlegen Ausführungszeit Sie können einen nicht rekursiven Job mit jobdispatcher einplanen, der nachts ausgeführt wird, und innerhalb dieses Jobdienstes können Sie wiederkehrende Jobs mit dem Job Dispatcher planen.

ExecutionWindow gibt die ungefähre Zeit an. Es kann nicht garantiert werden, dass es am angegebenen Fenster ausgeführt wird. Wenn das Fenster nicht angezeigt wird, wird der Job später unter idealen Bedingungen zum frühesten Zeitpunkt ausgeführt. Bei wiederkehrenden Jobs, wenn der Job beendet ist, berechnet der nächste Job die Ausführungsfensterzeit ab der letzten Ausführung des Jobs.

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);
16

Sie können einen wiederkehrenden Job einplanen, indem Sie den Job.Builder anweisen, einen wiederkehrenden Job mit einem Trigger zu erstellen, der ein Ausführungsfenster enthält, das Ihren Anforderungen entspricht.

1
Doug Stevenson