SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Aktualisieren Sie die Aktivitätsdaten des Dienstes, wenn dieser angehalten wurde

Der schwierige, aber richtige Weg, dies zu tun, besteht darin, Ihren eigenen benutzerdefinierten ContentProvider zu erstellen für Ihre App und aktualisieren Sie alle von Webdiensten und Push-Benachrichtigungen empfangenen Daten auf diesen ContentProvider . Wenn die Activity wieder in den Vordergrund kommt, aktualisiert er sich mit den neuen Daten, die vom ContentProvider bereitgestellt werden .

Es ist schwer weil ein benutzerdefinierter ContentProvider erstellt wird ist viel arbeit. Es ist das Richtige Weise, weil es mit dem Verhalten mobiler Anwendungen und der Android-Architektur übereinstimmt:Angenommen, ein Benutzer aktiviert einen Webdienst oder eine rechenintensive Aufgabe und schließt dann die App; oder sagen Sie, eine Push-Benachrichtigung kommt und erfordert, dass die Daten der App aktualisiert und angezeigt werden. In beiden Fällen die Activity der App s darf nicht mehr im Vordergrund stehen, sondern ein Service kann verwendet werden, um einige Nicht-UI-Operationen auszuführen. Nun, am Ende dieser Operation, der Service nimmt Änderungen an den Daten durch den ContentProvider vor , und wenn der Benutzer die App erneut aktiviert, die Activity s erhalten ihre neuen Daten vom ContentProvider .

Um das offizielle Tutorial zu zitieren:

Inhaltsanbieter sind die Standardschnittstelle, die Daten in einem Prozess mit Code verbindet, der in einem anderen Prozess ausgeführt wird.

Als Entwickler sollten Sie immer davon ausgehen, dass der Benutzer eine App jederzeit aufrufen und jederzeit schließen kann. Unabhängig davon, ob eine Activity im Vordergrund steht oder nicht, müssen die Daten der App korrekt aktualisiert und gepflegt werden.

Die eigenen Apps von Google verwenden benutzerdefinierte ContentProvider s. Das Gmail App nutzt insbesondere ihren ContentProvider um neue E-Mails zu erhalten, wenn eine Netzwerkverbindung verfügbar ist, und um E-Mails offline anzuzeigen. Das Facebook , WhatsApp &Twitter Auch Android-Apps nutzen ContentProvider s.