Einschränkungen für das Starten von Aktivitäten im Hintergrund

Android 10 (API-Level 29) und höher schränken ein, wann Apps Aktivitäten starten können, wenn sie im Hintergrund ausgeführt werden. Diese Einschränkungen tragen dazu bei, Unterbrechungen für den Nutzer zu minimieren und ihm mehr Kontrolle darüber zu geben, was auf seinem Bildschirm angezeigt wird.

In diesem Leitfaden werden Benachrichtigungen als Alternative zum Starten von Aktivitäten im Hintergrund vorgestellt. Außerdem sind die spezifischen Fälle aufgeführt, in denen die Einschränkung nicht gilt.

Stattdessen Benachrichtigungen anzeigen

In beinahe allen Fällen müssen Apps im Hintergrund zeitkritische Benachrichtigungen anzeigen, um dem Nutzer dringende Informationen zu liefern, anstatt direkt eine Aktivität zu starten. Zu diesen Benachrichtigungen gehören die Verarbeitung eines eingehenden Telefonanrufs oder ein aktiver Wecker.

Dieses benachrichtigungsbasierte Benachrichtigungs- und Erinnerungssystem bietet Nutzern mehrere Vorteile:

  • Wenn der Nutzer das Gerät verwendet, wird eine Vorabbenachrichtigung angezeigt, über die er reagieren kann. Der Nutzer behält seinen aktuellen Kontext bei und hat Kontrolle über den Inhalt, den er auf dem Bildschirm sieht.
  • Bei zeitkritischen Benachrichtigungen werden die Nicht stören-Regeln des Nutzers berücksichtigt. So können Nutzer beispielsweise nur Anrufe von bestimmten Kontakten oder von wiederholten Anrufen zulassen, wenn „Bitte nicht stören“ aktiviert ist.
  • Wenn der Bildschirm des Geräts ausgeschaltet ist, wird der Full-Screen Intent sofort gestartet.
  • Auf dem Bildschirm Einstellungen des Geräts kann der Nutzer sehen, von welchen Apps kürzlich Benachrichtigungen gesendet wurden, z. B. von bestimmten Benachrichtigungskanälen. Über diesen Bildschirm kann der Nutzer seine Benachrichtigungseinstellungen steuern.

Wann Apps Aktivitäten starten können

Apps, die unter Android 10 oder höher ausgeführt werden, können Aktivitäten starten, wenn eine oder mehrere der folgenden Bedingungen erfüllt sind:

  • Die App hat ein sichtbares Fenster, z. B. eine Aktivität im Vordergrund.
  • Die App hat eine Aktivität im Backstack der Aufgabe im Vordergrund.
  • Die App enthält im Back-Stack einer vorhandenen Aufgabe auf dem Bildschirm „Zuletzt“ eine Aktivität.

  • Die App hat eine erst vor Kurzem gestartete Aktivität.

  • Die App finish() für eine Aktivität wurde vor Kurzem ausgeführt. Dies gilt nur, wenn die App beim Aufruf von finish() entweder eine Aktivität im Vordergrund oder eine Aktivität im Back-Stack der Vordergrundaufgabe hatte.

  • Die App hat einen der folgenden Dienste, der an das System gebunden ist. Diese Dienste müssen möglicherweise eine UI starten.

  • Die App hat einen Dienst, der an eine andere, sichtbare App gebunden ist. Die an den Dienst gebundene App muss sichtbar bleiben, damit die App im Hintergrund Aktivitäten erfolgreich starten kann.

  • Die App erhält eine Benachrichtigung PendingIntent vom System. Bei ausstehenden Intents für Dienste und Sendeempfänger kann die Anwendung für einige Sekunden Aktivitäten starten, nachdem der ausstehende Intent gesendet wurde.

  • Die App empfängt ein PendingIntent, das von einer anderen, sichtbaren App gesendet wird.

  • Die App empfängt einen System-Broadcast, bei dem sie voraussichtlich eine Benutzeroberfläche starten soll. Beispiele hierfür sind ACTION_NEW_OUTGOING_CALL und SECRET_CODE_ACTION. Die App kann nach dem Senden der Nachricht noch einige Sekunden lang Aktivitäten starten.

  • Die App ist über die CompanionDeviceManager API mit einem Companion-Hardwaregerät verknüpft. Mit dieser API kann die App Aktivitäten als Reaktion auf Aktionen starten, die der Nutzer auf einem gekoppelten Gerät ausführt.

  • Die App ist ein Device Policy Controller, der im Modus „Geräteeigentümer“ ausgeführt wird. Beispielanwendungsfälle sind vollständig verwaltete Unternehmensgeräte sowie dedizierte Geräte wie digitale Beschilderung und Kioske.

  • Der Nutzer erhält der App die Berechtigung SYSTEM_ALERT_WINDOW.