2016-07-18 22 views
6

Mein AppWidgetProvider (was natürlich ein BroadcastReceiver) registriert CONNECTIVITY_CHANGE zu erhalten, so dass ich, sobald Sie die Widgets aktualisieren kann als Netzwerk gestellt wird (wenn auch nur bei Bedarf, dh wenn ein vorherigen Update wurde wegen mangelnder Konnektivität verpasst).Android N: mit einem Mangel an CONNECTIVITY_CHANGE Umgang

Aber als here wurde im Rahmen dieses nicht mehr im Android N. möglich sein, ist der Vorschlag JobScheduler, verwenden, die Sie, dass der Job nur angeben kann, wenn sie sich mit einem Netzwerk mittels der Methode .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) verbunden.

Allerdings kann ich nicht sehen, wie dies verwendet werden kann, um mein gewünschtes Verhalten zu replizieren. Es scheint mir, dass die .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) Methode den Job überhaupt nicht ausgeführt wird, wenn kein Netzwerk zum Zeitpunkt, dass der Job geplant ist, und es wird nicht verursachen den Job geduldig warten, bis es ein Netzwerk gibt und dann lauf (was ich brauche).

Also, wie behalte ich das Verhalten, das ich brauche, mit Android N?

Antwort

0

Ich verwende Job Scheduler und es hängt nicht davon ab, ob Netzwerk verfügbar ist oder nicht während der Planung des Jobs. Es bietet bestimmte Bedingungen und wenn diese Bedingungen erfüllt sind, ist der Job geplant. Sie können einen sich wiederholenden Job festlegen und außerdem eine minimale Zeitlücke zwischen den Jobs angeben. Zum Beispiel, wenn ich mein Telefon anlade, um PlayStore zu laden, fange an, Apps zu aktualisieren, da der Job eine Ladebeschränkung hat.

Wenn Sie einen Job planen und die Bedingungen nicht erfüllt sind, wird geplant, wann das Netzwerk verfügbar ist. Versuchen Sie, das Netzwerk zu trennen und ein Profil auf Facebook zu öffnen. Sie werden aufgefordert, das Profil für die Netzwerkverfügbarkeit zu laden. Verbinden Sie sich nun mit dem Netzwerk und Sie erhalten die Benachrichtigung sobald das Profil geladen ist.

+0

Sie können Firebase Dispatcher auch verwenden, wenn Sie möchten. Es ist abwärtskompatibel. – Embydextrous

+0

Sie können Jobs auch über den Neustart des Geräts hinweg anhalten. – Embydextrous

0

try google ping für Netzwerkänderungs- hinzufügen, die Sie für Netzwerkänderungs- helfen und alle Ursache i gleiche Problem, wenn ich mit Socket-Dienste zu entwickeln wurde. So kann es dir auch helfen.