Was ist der Unterschied zwischen einem Dienst und einem Rundfunkempfänger?

Ich höre immer wieder von Diensten und Rundfunkempfängern . Was ist der Unterschied zwischen ihnen und wie wirken sie sich aus meiner Sicht auf den Betrieb meines Android-Telefons aus?

Anstatt Ports auf der TCP-Schicht zu erstellen, erstellen wir immer Broadcast-Empfänger, um die Batterie und viel Verarbeitung zu sparen. Wenn ein Ereignis in Android eintritt ... wird die Übertragung innerhalb des Telefons an alle Apps gesendet habe Broadcast-Empfänger zu diesem Ereignis geschrieben,,, wird es automatisch aufgerufen. Technisch gesehen wird das Ereignis, das passiert ist, in Bezug auf Android als Absicht bezeichnet

Antworten (1)

Android-Anwendungen haben drei Arten von Komponenten. Im Allgemeinen müssen Benutzer nichts davon wissen: Sie sind eine Möglichkeit für App-Autoren, bestimmte Verhaltensweisen in ihre Apps zu programmieren. Aber wenn Sie das Verhalten Ihrer Apps genau beobachten, z. B. mit einem Task-Manager, oder wenn Sie Dinge mit einer App wie Tasker automatisieren, ist es hilfreich zu verstehen, wie sie innerhalb des Systems zusammenpassen.

Eine Aktivität ist die bekannteste Art von Komponente: Es ist ein Fenster, das Sie sehen können: entweder im Vollbildmodus oder in Dialoggröße. Eine Aktivität wird nur ausgeführt, während sie auf dem Bildschirm angezeigt wird. Sobald Sie die Aktivität verlassen, hält Android diese App im Speicher bereit, um erneut gestartet zu werden, aber die Aktivität wird nicht ausgeführt, was bedeutet, dass sie weder Akku noch Netzwerk verwendet. Eine App startet eine Aktivität mit einer Absicht . Die Absicht kann explizit angeben, welche Aktivität gestartet werden soll, oder sie kann eine auszuführende Aktion angeben (z. B. das Öffnen einer bestimmten Datei). Wenn mehr als eine Aktivität die Absicht „verarbeiten“ kann, wird ein Dialogfeld angezeigt, in dem Sie aufgefordert werden, eine auszuwählen.

Ein Dienst ist eine weitere Anwendungskomponente. Sobald eine andere Komponente (vielleicht eine Aktivität oder ein anderer Dienst) einen Dienst gestartet hat, läuft er im Hintergrund, bis er sich selbst stoppt. Dies bedeutet, dass ein Dienst Ihr Telefon möglicherweise wach hält (mithilfe einer Wecksperre ), den Akku entlädt oder viele Netzwerkdaten verwendet, ohne dass etwas auf dem Bildschirm angezeigt wird.

Apps können Dienste verwenden, um lang andauernde Prozesse im Hintergrund auszuführen, wie z. B. das Herunterladen von Dateien von einem Server, das Abrufen von E-Mails oder das Überprüfen Ihres Standorts. Obwohl Dienste nicht direkt angezeigt werden oder mit Ihnen interagieren, werden sie dennoch in der Liste „Ausgeführte Apps“ angezeigt. Wählen Sie in der App „Einstellungen “ den Apps- oder Anwendungsmanager und dann Wird ausgeführt aus . Sie können einen Dienst auf diese Weise stoppen, aber das ist normalerweise nicht notwendig. Da Dienste nicht direkt sichtbar sind, betrachtet Android sie als weniger wichtig als Aktivitäten, sodass sie als erste beendet werden, wenn Ihr Telefon mehr Speicher benötigt.

Rundfunkempfänger sind die dritte Art von Komponenten. Wie Dienste existieren sie nur im Hintergrund und interagieren nicht direkt mit Ihnen. Aber im Gegensatz zu Diensten können sie nicht weiterlaufen oder lange Aufgaben ausführen: Sie existieren, um auf Ereignisse zu reagieren. Und im Gegensatz zu Aktivitäten und Diensten können mehrere Rundfunkempfänger auf einmal gestartet werden.

Eine Komponente sendet eine Absicht, möglicherweise an eine App, aber häufiger, ohne eine bestimmte App anzugeben. In diesem Fall stellt die Absicht normalerweise ein Ereignis dar, das passiert ist, wie z. B. eine schwache Batterie. Das System findet alle Rundfunkempfänger, die ein Interesse angemeldet haben (unter Verwendung eines Absichtsfilters ), und führt sie der Reihe nach aus. Jeder Rundfunkempfänger kann sofort reagieren, indem er beispielsweise eine Benachrichtigung erstellt, oder er kann einen Dienst oder eine Aktivität starten, um weitere Maßnahmen zu ergreifen. Sobald der Rundfunkempfänger das Ereignis behandelt hat, wird er angehalten und läuft nicht weiter, bis ein anderes ähnliches Ereignis gesendet wird.

Ein Beispiel für das Zusammenwirken aller drei Komponenten ist das Herunterladen einer App von Google Play. Erstens bietet die Google Play-Aktivität die visuelle Oberfläche, über die Sie den herunterzuladenden Inhalt auswählen können. Die Liste der Apps kann eine Aktivität sein; Durch Klicken auf die Schaltfläche "Installieren" wird eine weitere Aktivität gestartet, um den Bestätigungs- oder Zahlungsdialog anzuzeigen. Wenn Sie bestätigen, startet die Dialogaktivität einen Dienst. Der Dienst lädt den Inhalt auch dann weiter herunter, wenn die Aktivität beendet ist und nicht mehr ausgeführt wird.

Aber vielleicht verliert das Telefon die Internetverbindung, während die neue App heruntergeladen wird. In diesem Fall registriert der Downloaddienst von Google Play einen Rundfunkempfänger mit einem Absichtsfilter, der besagt, dass er an Änderungen der Netzwerkkonnektivität interessiert ist, und der Dienst stoppt sich dann selbst. Wenn das Telefon eine Verbindung zum Internet herstellt, sendet das System ein Ereignis. Android startet den vom Google Play-Dienst registrierten Rundfunkempfänger zusammen mit allen anderen Rundfunkempfängern, die auf dieses Ereignis warten. In diesem Fall startet der Rundfunkempfänger den Download-Dienst erneut. Der Dienst erstellt Benachrichtigungen, während der Download fortschreitet, und wenn er abgeschlossen ist, sendet er einen eigenen Broadcast, um andere Apps darüber zu informieren, dass das neue Paket installiert wurde, und stoppt sich dann selbst. Dies wiederum startet Broadcast-Empfänger von anderen Apps,

In Summe:-

  • Eine Aktivität stellt ein Fenster auf dem Bildschirm dar; ein Dienst führt eine möglicherweise lang andauernde Hintergrundaufgabe aus; ein Rundfunkempfänger läuft kurzzeitig, um ein Ereignis abzuwickeln.
  • Alle drei werden mithilfe von Absichten gestartet, verwenden jedoch einen anderen Mechanismus. Die startende App muss explizit angeben, welche Art von Komponente gestartet werden soll (indem jeweils eine andere Methode aufgerufen wird).
  • Wenn eine App eine Aktivität mit einer Absicht startet, startet sie nur eine Aktivität (möglicherweise zeigt sie das Dialogfeld „Aktion abschließen mit …“ an, damit Sie auswählen können, welche) und das gleiche gilt für Dienste, aber das Übertragen einer Absicht kann mehrere Übertragungen starten Empfänger, möglicherweise von verschiedenen Apps.
  • Als Benutzer interagieren Sie direkt mit Aktivitäten; Sie interagieren nicht mit Diensten, aber sie können das Telefon verlangsamen und Ressourcen verbrauchen. Sie interagieren nicht mit Rundfunkempfängern, und da diese kurzlebig sind, müssen Sie sich keine Gedanken über deren Verwaltung machen.
Eine sehr nützliche Antwort. Ich möchte nur etwas bestätigen: Was passiert mit Apps, die von Benutzern deaktiviert wurden? Startet Android jemals seinen Broadcast-Empfänger für die Absichten, für die sie registriert sind? Oder können diese deaktivierten Apps ihren Dienst im Hintergrund ausführen? Warum ist die Force-Stop-Schaltfläche für deaktivierte Apps auch nach einem Neustart nicht ausgegraut? Mir ist klar, dass ihre Aktivitäten nicht gestartet werden können.
@Firelord Wenn Sie eine neue Frage haben, sollten Sie sie als neue Frage posten. Kommentare erlauben keine tiefgehenden Antworten und machen Ihre Frage nicht für andere Besucher auffindbar.
toller Beitrag, aber tatsächlich gibt es vier Komponenten. Inhaltsanbieter fehlen.