Ich denke, es gibt eine Menge Dinge, die auf der SDK-Site schlecht dokumentiert sind. Dies ist eine davon. Die Behauptung, die ich machen werde, ist, dass es anscheinend besser ist, standardmäßig einen Anwendungskontext zu verwenden und einen Aktivitätskontext nur dann zu verwenden, wenn Sie es wirklich brauchen. Der einzige Ort, an dem ich jemals gesehen habe, dass Sie einen Aktivitätskontext benötigen, ist ein Fortschrittsdialog. SBERG412 behauptet, dass Sie einen Aktivitätskontext für eine Toastnachricht verwenden müssen, die Android-Dokumente zeigen jedoch deutlich, dass ein Anwendungskontext verwendet wird. Aufgrund dieses Google-Beispiels habe ich immer den Anwendungskontext für Toasts verwendet. Wenn dies falsch ist, hat Google den Ball hier abgelegt.
Hier ist mehr zum Nachdenken und Überprüfen:
Für eine Toastnachricht verwendet der Google Dev Guide den Anwendungskontext und sagt ausdrücklich, dass er verwendet werden soll:
Toastbenachrichtigungen
Im Abschnitt "Dialoge" des Dev-Handbuchs sehen Sie, dass ein AlertDialog.Builder den Anwendungskontext verwendet und der Fortschrittsbalken einen Aktivitätskontext. Dies wird von Google nicht erklärt.
Dialoge
Ein guter Grund für die Verwendung des Anwendungskontexts scheint zu sein, wenn Sie Konfigurationsänderungen wie eine Orientierungsänderung behandeln und Objekte beibehalten möchten, die einen Kontext wie Ansichten benötigen. Wenn Sie hier suchen: Laufzeitänderungen
Verwendung eines Aktivitätskontexts, der zu einem Leck führen kann, ist Vorsicht geboten. Dies kann mit einem Anwendungskontext mit den Ansichten vermieden werden, die beibehalten werden sollen (zumindest ist das mein Verständnis). In einer App, die ich schreibe, beabsichtige ich, einen Anwendungskontext zu verwenden, da ich versuche, einige Ansichten und andere Dinge bei einer Orientierungsänderung beizubehalten, und ich möchte weiterhin, dass die Aktivität bei Orientierungsänderungen zerstört und neu erstellt wird. Daher muss ich einen App-Kontext verwenden, um keinen Speicherverlust zu verursachen (siehe Vermeiden von Speicherverlusten) ). Mir scheint, es gibt viele gute Gründe, den Anwendungskontext anstelle eines Aktivitätskontexts zu verwenden, und für mich scheint es fast so, als würden Sie ihn häufiger als einen Aktivitätskontext verwenden. Das scheinen viele Android-Bücher zu tun, und genau das tun viele der Google-Beispiele, die ich gesehen habe.
Die Google-Dokumentation lässt den Eindruck entstehen, dass die Verwendung des Anwendungskontexts in den meisten Fällen vollkommen in Ordnung ist und tatsächlich häufiger als die Verwendung eines Aktivitätskontexts in ihren Beispielen (zumindest in den Beispielen, die ich gesehen habe). Wenn es wirklich so ein Problem ist, den Anwendungskontext zu verwenden, muss Google dies wirklich stärker betonen. Sie müssen es klarstellen und einige ihrer Beispiele wiederholen. Ich würde dies nicht nur unerfahrenen Entwicklern vorwerfen, da die Behörde (Google) es wirklich so aussehen lässt, als sei es kein Problem, Anwendungskontexte zu verwenden.