2016-07-14 28 views
0

Ich versuche, eine Toast auf ProgressUpdate() -Methode zu zeigen. Funktioniert gut auf Android 4,5, aber der Toast wird nicht auf Android 6 gezeigt und keine Ausnahmen werden geworfen.Toast nicht bei progressUpdate in android 6 bei Verwendung von getApplicationContext() als Kontext angezeigt

Hier ist meine Methode:

@Override 
    protected void onProgressUpdate(String... values) { 
    super.onProgressUpdate(values); 
    Toast.makeText(getApplicationContext(), values[0],  Toast.LENGTH_SHORT).show(); 
    } 

Wenn ich getApplicationContext() mit getBaseContext() ersetzen, der Toast wie erwartet funktioniert.

Es funktioniert nicht, wenn ich MainActivity.this als Kontext verwenden

Ist es richtig getBaseContext() zu verwenden? Warum funktioniert mit getApplicationContext() auf Android 4,5 und nicht auf 6?

Antwort

0

Ich bin mir nicht sicher, was passiert ist, als sie das Android 6.0-Update gemacht haben, aber sie müssen einige Kontexte oder etwas ähnliches eingepackt haben. Hier ist der Unterschied zwischen diesen beiden Methoden: Difference between getContext() , getApplicationContext() , getBaseContext() and "this"

Activity.getApplicationContext(): Gibt den Kontext für die gesamte Anwendung (der Prozess alle Aktivitäten innerhalb von ausgeführt werden). Verwenden Sie diesen anstelle des aktuellen Aktivitätskontexts, wenn Sie einen Kontext benötigen, der an den Lebenszyklus der gesamten Anwendung gebunden ist, nicht nur an die aktuelle Aktivität.

ContextWrapper.getBaseContext(): Wenn Sie in einem anderen Kontext Zugriff auf einen Kontext von benötigen, verwenden Sie einen ContextWrapper. Der Context, der auf verweist, von innerhalb, dass ContextWrapper über getBaseContext() zugegriffen wird.

+0

Vielen Dank für den Austausch! – Gringo