2016-08-13 1 views
3

Ich brauche String von Ressourcen an einem Ort, wo Context Objekt nicht verfügbar ist. Ich kann Kontextobjekt als Parameter übergeben und String von Ressourcen wie diese:Welche Nachteile der Verwendung des Anwendungskontexts anstelle der Aktivität zum Abrufen von Zeichenfolgen?

context.getString(R.string.some_string); 

Aber ich kann auch meine Application (extends Application) weise wie folgt verwendet werden:

MyApplication.getInstance().getResources().getString(R.string.some_string) 

Gibt es irgendwelche Nachteile für die zweiten Ansatz?

Antwort

0

Sie sollten ApplicationContext verwenden, wenn Sie etwas Globales für alle Aktivitäten erstellen oder etwas behalten möchten, bis der Benutzer die Anwendung verlässt.

Activity context halten, um Objekte solange activity ist alive und Speicher wird ondestroy Aufruf Aktivität freigesetzt werden, aber wenn Sie Anwendungskontext verwendet haben, dann wird das Objekt in Erinnerung bleiben, solange die App aktiv ist, und dies kann dazu führen, a memory leak.

In Ihrem Fall ist es besser, wenn möglich Aktivitätskontext für Objekte zu verwenden, die für diese Aktivität lokal sind, besonders wenn etwas mit GUI-Komponenten der Aktivität in Verbindung steht.

Lesen Sie diese post für weitere Details

Verwandte Themen