2013-04-22 5 views
6

Wenn ich Listenansicht verwende und ich eine benutzerdefinierte Basisadapterklasse habe, erhalte ich unterschiedliche Textfarbe in der Listenansicht, wenn der Basisadapter von getApplicationContext und classname.this instanziiert wird. Von getApplicationContext bekomme ich weiße Textfarbe aber classname.this ist schwarz. Kann mir das jemand erklären?Unterschied zwischen getApplicationContext und classname.this

+2

siehe [hier] (http : //stackoverflow.com/questions/5018545/getapplication-vs-getapplicationcontext) – Gunaseelan

+0

Möglicherweise haben Sie ein anderes Thema auf Ihre spezifische Aktivität als die gesamte Anwendung angewendet. Dies könnte zu unterschiedlichen Stilen führen, je nachdem, welcher Kontext verwendet wird. – Shiv

+0

Ich benutze tatsächlich android: theme = "@ style/Theme.VPI" in allen meine activty –

Antwort

6

Grundsätzlich sind sie beiden Instanzen von Context, aber der Unterschied ist Anwendungsinstanz mit dem Lebenszyklus der Anwendung gebunden ist, während die Aktivität Instanz mit dem Lebenszyklus einer Aktivität verknüpft ist. Damit sie den Zugriff auf verschiedene Informationen über die Anwendungsumgebung haben ...

getApplicationContext siehe

EDIT

Bei der Suche nach Ihrer Antwort wird es Ihnen helfen Android Holo Light styling changes depending on chosen context

+0

Vielen Dank Ich fand meine Antwort in Ihrem Beitrag –

+0

welcum :) Liebe ... froh, ich könnte Ihnen helfen – Shiv

6

Aktivitätsname.dies bezieht sich auf Aktivitätskontext. getApplicationContext() bezieht sich auf den Anwendungskontext.

In den meisten Fällen ist es besser, Aktivitätskontext zu verwenden.

Überprüfen Sie die Antwort von commonsware. Hat eine Detailerklärung zum Thema.

When to call activity context OR application context?

Zitat bilden den Link oben

Hier sind Gründe warum nicht verwenden getApplicationContext(), wohin Sie gehen:

  1. Es ist keine vollständige Kontext, alles unterstützt diese Aktivität tut es. Verschiedene Dinge, die Sie mit diesem Kontext versuchen werden, werden fehlschlagen, hauptsächlich im Zusammenhang mit der GUI.

  2. Es kann Speicherlecks verursachen, wenn der Kontext von getApplicationContext() auf etwas hält, das durch Ihre Aufrufe erstellt wurde, die Sie nicht bereinigen. Mit einer Aktivität, wenn sie sich an etwas hält, sobald die Aktivität Müll sammelt, wird auch alles andere gelöscht. Das Anwendungsobjekt bleibt für die Lebensdauer Ihres Prozesses erhalten.

+0

Vielen Dank, aber wirklich konnte ich nicht verstehen, warum die Textfarbe in beiden Kontext –

+0

einfach ist lies den Punkt 1 in der Antwort. vielleicht der Grund. Zeig uns etwas Code. – Raghunandan

+0

Ja, Sie haben Recht, vielleicht sollte ich Kontextreferenz sorgfältig lesen –

Verwandte Themen