Wenn meine Android App einen laufenden Dienst hat (z. B. eine Erweiterung), hat der Dienst immer Zugriff auf genau die gleiche Application
Instanz (unter Verwendung der getApplication
Methode) als jede (vielleicht später gestartet) Activity
meiner App?Lebenszyklus der Anwendungsinstanz (bezogen auf Dienste und Aktivitäten)
Antwort
Die Application
Instanz ist ein Singleton. Es wird erstellt, wenn Android eine Komponente Ihrer Anwendung in einem neuen Prozess startet.
Beachten Sie, dass, wenn Android den Prozess hostet Ihre Anwendung hostet und dann startet Ihre Service
, wird es in einem neuen Prozess ausgeführt und Android wird eine neue Instanz der Application
Klasse erstellen.
ja Ihr Dienst wird immer Zugriff auf gleiche Anwendungsinstanz, wenn Ihre Aktivität neu gestartet wird, dann wird es hat eine andere Instanz erstellen
Was meinen Sie mit "eine andere Instanz erstellen"? Dann haben beide (Dienst und Aktivität) keinen Zugriff auf dieselbe Instanz ?! Sie würden nur die gleiche Instanz teilen, wenn die gestartete Aktivität die Instanz des Dienstes irgendwie wiederverwenden würde (vorausgesetzt, der Dienst läuft länger als jede Aktivität). – Zardoz
Und ich denke, alle Aktivitäten, die nach dem Erstellen des neuen Prozesses gestartet werden, verwenden dann die neu erstellte 'Application'-Instanz. – Zardoz
Ja, alle Komponenten ("Aktivität, Service, BroadcastReceiver, Provider") innerhalb des Prozesses verwenden die gleiche "Application" -Instanz. –