2012-12-01 6 views
5

Ich möchte Methode in einer anderen Klasse nennen, die Context als Eingangsparameter müssen, aber ich habe 3 Möglichkeit in Service:Welchen Kontext für den Service?

- getApplicationContext 
- getBaseContext 
- getApplication 

Welche in ScreenService zu verwenden, die extends Service

was die Haupt unterscheidet. Ich habe vor einiger Zeit gelesen, dass es nicht gut ist, getApplicationContext zu verwenden. Ist das wahr?

Antwort

6

Anwendungskontext ist an den Lebenszyklus der Anwendung gebunden und wird während der gesamten Anwendungsdauer immer gleich sein. Wenn Sie also Toast verwenden, können Sie den Anwendungskontext oder sogar den Aktivitätskontext (beides) verwenden, da ein Toast von überall in Ihrer Anwendung ausgelöst werden kann und nicht an ein Fenster angehängt ist.

Der Aktivitätskontext ist dem Lebenszyklus der Aktivität zugeordnet und kann zerstört werden, wenn die Aktivität onDestroy ausgelöst wird.

getApplication() Obwohl es sich auf das Application-Objekt bezieht, die Application-Klasse jedoch die Context-Klasse erweitert, kann sie verwendet werden, um einen Anwendungskontext anzubieten.

getApplicationContext() bietet Anwendungskontext.

getBaseContext() bietet Aktivitätskontext.

Es hängt davon ab, warum Sie zu welchem ​​Zweck Sie den Kontext verwenden,

getApplicationContext() ist am meisten bevorzugte Art und Weise, da dieser Kontext, bis Anwendung heruntergefahren lebt.

getBaseContext() Kontext ist für Widgets und Ansichten verfügbar.

so in einer Toast-Nachricht oder beim Erstellen einer Absicht, haben sie alle den gleichen Effekt, obwohl die Verwendung getApplicationContext() ist die korrekteste. Toast akzeptiert jede Art von Kontext, da keine Ansicht angehängt ist. Es ist eine Benachrichtigung.

+0

danke SahiuMahajanMj – senzacionale

Verwandte Themen