Kann der Anwendungskontext während des Anwendungslebenszyklus geändert werden?

Kann ich mich darauf verlassen, dass sich der Context der Anwendung während des Lebenszyklus der Anwendung nicht ändert? Was, wenn ich einen context irgendwo mit Singleton-Muster zu speichern und dann wo immer ich brauche?

  • Dynamische Hinzufügen von optionalen Parametern zu API-Anfragen
  • Android searchable funktioniert nicht
  • Gibt es eine Möglichkeit, die Android Device Chooser zu verbergen?
  • Android einen Json String erstellen
  • Android-Listenansicht in einer Scroll-Ansicht
  • Jeder Weg, um Android-Standard-Browser erkennen Nicht-ASCII-Dateinamen in "Content-Disposition: Anhang" Downloads?
  • Wie bekomme ich Bitmap von der androiden Standardressource?
  • Android Phone Number Verification
  • Erstellen Sie aar-Datei in Android Studio
  • ActionBar funktioniert nicht, wenn ListActivity erweitert wird
  • OnRestore nicht für meine benutzerdefinierte BackupAgent aufgerufen
  • Google Maps Utility: Wie bekomme ich alle Marker von ClusterManager <?>?
  • 6 Solutions collect form web for “Kann der Anwendungskontext während des Anwendungslebenszyklus geändert werden?”

    Um deine zweite Frage zuerst zu beantworten: Wenn du einen Staat in einem Singleton speichern musst, kannst du die Android Application und deine Application wird dein Singleton (es ist auch ein Context ). Es wäre nicht nötig, es zu speichern.

    Um die erste Frage, ob der Context zur Laufzeit geändert werden kann: Art im Zusammenhang mit Ihrer anderen Frage , ich denke wir können das herausfinden, indem wir uns auf ContextWrapper.attachBaseContext :

      protected void attachBaseContext(Context base) { if (mBase != null) { throw new IllegalStateException("Base context already set"); } mBase = base; } 

    Also, ja, du kannst dich darauf verlassen; Es kann nicht geändert werden, und wenn du es versuchst, wird es eine IllegalStateException .

    Android Application Class IST Ihr Singleton für die Speicherung von Informationen, die durch Anwendungen Lifecycle-Phasen verfolgt werden sollten. Sie können diese Klasse 'Beschreibung im Handbuch – http://developer.android.com/reference/android/app/Application.html

    Es gibt einige Kontroversen um dieses Thema. Auch einige unter den Leuten von Google. Ich halte, was ich glaube, ist der richtige Ansatz, der grundsätzlich versucht, den Aktivitätskontext so oft wie möglich zu bekommen. Grund, der Punkt des Kontextes ist die Bereitstellung von Ressourcen / Teile Ihrer App die Umgebung, aus denen funktioniert. Je genauer die Informationen sind, die Sie dem System geben, desto weniger unerwartetes Verhalten würde auftreten (dh: Sie haben nur Zugriff auf einige Ressourcen im Bereich Aktivitätskontext und den Weg aus dem App-Kontext.

    Denken Sie daran, dass die Aktivität ein Kontext ist, so dass die Übergabe "dieses" wird den Job machen, wenn Sie innerhalb einer Aktivität sind, oder "getActivity ()", wenn Ihr Code aus einem Fragment funktioniert.

    Außerdem muss ich mit devmiles.com einverstanden sein. Es ist ziemlich nützlich, Ihre eigene Anwendungsklasse als Singleton zu verwenden, da man den Lebenszyklus der App einfach verwalten und als richtigen Mittelpunkt nutzen kann. Noch einmal, um den appContext zu bekommen, reicht es aus, getApplicationContext oder sogar die Instanz deiner Application Singleton Klasse aufzurufen.

    Ja, Sie können sich darauf verlassen, dass der Kontext während des Anwendungslebenszyklus nicht verändert wird!

    Google sagen so in der Übersicht der Anwendungsklassen .

    Ich denke, es wird perfekt für Ihren Fall.

    Anwendung ist ein Singleton und ich weiß nicht von einer Möglichkeit, das zu umgehen, ohne den Kern zu wechseln.

    Es besteht jedoch die Möglichkeit, 2 Instanzen eines Anwendungsobjekts zu begegnen, wenn Ihr Code einen anderen Prozess startet. Ein Beispiel würde einen Remote-Service starten; Dadurch wird ein weiterer Prozess erstellt, der die eigene Instanz des Anwendungsobjekts erstellt.

    http://developer.android.com/reference/android/app/Service.html#RemoteMessengerServiceSample

    Um Verwirrung zu vermeiden, musst du zwischen dem entfernten Dienst und dem Rest der App mit einer der Optionen für paketfähige oder serialisierbare Android kommunizieren:

    Nachricht – Handler Intent Bundle Absicht putExtra

    Oder erstellen Sie eine Ihrer eigenen

    In der Anwendungsklasse ist eine Singletions-Anwendungsebene Klasse für Android-Anwendung. Meine Antwort ist nein, Sie können das Anwendungskontextobjekt nicht ändern.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.