6

Ich bin ein wenig unsicher, wie FirebaseJobDispatcher (JobScheduler) funktionieren soll. Was ich möchte, wenn ein Benutzer die Internetverbindung verliert, erhält die Konnektivität für die Ausführung meiner App erneut und führt eine Synchronisierung durch, um nach dem Wiederherstellen der Verbindung nach Inhaltsaktualisierungen zu suchen.FirebaseJobDispatcher auf Netzwerkänderung ausgeführt

Ich weiß, wir sollten nicht Connectivity Änderung Broadcast-Listener verwenden und Jobscheduler verwenden, aber es scheint, dass mehr Jobscheduler eines smarten Alarmmanager ist, wo es auch laufen, wenn es keine Konnektivität Änderung war (was ich nicht brauche).

Ist das der Fall oder missverstehe ich, wie es funktioniert? Wenn nicht, gibt es etwas, das nur ausgelöst wird, wenn der Benutzer die Internetverbindung wiedererlangt?

+0

Hallo @tyczj auch funktioniert, haben wir eine gleiche Anforderung wie Sie. Wir möchten einen Alarm-Broadcast-Empfänger starten, wenn das Internet von nicht verfügbar bis verfügbar wird. Wir nutzen dies um über "CONNECTIVITY_CHANGE" nahtlos zu erreichen. Aber, seit Anhören von 'CONNECTIVITY_CHANGE' nicht mehr funktioniert, wenn Sie die App beenden, haben Sie herausgefunden, wie' FirebaseJobDispatcher' verwendet wird? –

+0

@CheokYanCheng Job Dispatcher funktioniert nicht so, es ist ein intelligenter Alarm-Manager. Ich benutze jetzt Push-Benachrichtigungen und wenn der Benutzer das Internet zurückbekommt, kommen die Push-Benachrichtigungen und der Inhalt wird aktualisiert – tyczj

Antwort

0

Die TestApp für den JobDispatcher bietet ziemlich gute Beispiele; Während gewöhnlich kann man einen Builder verwenden, um einen Job für den Dispatcher zu erstellen. habe gerade dieses answer hier gefunden, was es genauer erklärt.

/* a recurring job, being triggered in the time-frame in between 59-61 seconds */ 
Job.Builder builder = dispatcher 
    .newJobBuilder() 
    .setTag("SomeJob") 
    .setService(SomeJobService.class) 
    .setRecurring(true) 
    .setTrigger(Trigger.executionWindow(59, 61)); 
3

JobScheduler ist eine gute Option, wenn Sie einige Aktionen auslösen wollen, was geschieht nur, wenn einige Voraussetzungen gemacht werden (Connectivity, Batterie und System des Broadcasts). Planen Sie in Ihrem Fall einige Arbeiten, die nur stattfinden, wenn der Benutzer eine Internetverbindung hat.

können Sie JobSchedulerMindest API 21 und Google Play-Dienst nicht erforderlich ist. FirebaseJobDispatchermindestens API 9 und Play-Service ist erforderlich.
Zusätzlich AndroidJob ist eine Bibliothek, die mindestens API 14 hat und keinen Play Service erfordert.

Dieses Video kann dazu beitragen, einige Zweifel mit FirebaseJobDispatcher zu klären und zusätzlich ist dieser Beitrag von Evernote gute Ressource.

1

Im Folgenden Code löst auf jedem Netzwerk in einfachen Worten WLAN oder Datennetz

Job myJob = mDispatcher.newJobBuilder() 
       .setService(MyJobService.class) 
       .setTag(JOB_TAG) 
       .setRecurring(true) 
       .setTrigger(Trigger.executionWindow(5, 5)) 
       .setLifetime(Lifetime.FOREVER) 
       .setConstraints(Constraint.ON_ANY_NETWORK) 
       .setReplaceCurrent(false) 
       .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) 
       .build(); 

     mDispatcher.schedule(myJob); 

Wechsel zu .setConstraints (Constraint.ON_UNMETERED_NETWORK) wird es nur in WiFi-Netzwerk arbeiten.

die constarints entfernen, ohne Netz

Verwandte Themen