Android-component name, der zum starten einer Aktivität
Gibt es viele Möglichkeiten, um zu starten, eine andere Aktivität.
Die meisten überladen von Methoden erfordert, dass Sie passieren einen Kontext.
Aber wenn componentName starten Sie eine Aktivität mit
public Intent setComponent (ComponentName component)
und dieser Konstruktor für ComponentName
ComponentName(String pkg, String cls)
Sehen Sie oben, ich bin in der Lage, starten Sie eine Aktivität, die OHNE Kontext-argument
Aber es muss einige "Kontext" irgendwie intern, habe ich Recht? Wenn ja, in welchem Kontext? Anwendung der einen oder der Aktivität?
Bedeutet das, dass jedes mal, wenn ich diese zwei Methoden (siehe oben), brauche ich nicht zu befürchten, memory leak, weil ich bin nicht vorbei Kontext um??
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie sich keine sorgen über Speicherlecks in jedem Fall, aber es ist gut, dass du ein Auge auf, wo Sie vorbei sind Kontext-Objekte. Vorsatz verwendet einfach den Context-parameter, um Ihre package-Namen verwenden, wenn Sie die
Intent(Context, Class)
Konstruktor odersetClass(Context, Class)
Methode. Sie sind nur convenience-Methoden.adamp s Antwort ist korrekt (er bekam es, bevor ich posten könnte).
Einfach zu erweitern es ist dies die Quelle für die
Intent(Context packageContext, Class<?> cls)
Konstruktor......und dies ist die Quelle für
ComponentName(Context pkg, Class<?> cls)
KonstruktorAls adamp andeutet, ist der
Intent
Methoden, die einContext
sind convenience-Methoden, die nur verwenden Sie es zum erstellen derComponentName
was wiederum befasst sich nur inString
Arten (mPackage
undmClass
). Weder dieIntent
noch dieComponentName
einen Verweis auf dieContext
.startActivity()
nicht erforderlich, ein Kontext als ein parameter; es ist eine Methode innerhalb einer Klasse, die bereits abgeleitet (oder implementiert) Kontext. Das ist-das kann man nicht nennenstartActivity()
wenn Sie nicht über einen Kontext, aus dem es nennen.Vielleicht habe ich Ihre Frage nicht verstanden. Aber Sie verwenden Sie nicht Kontext, wenn Sie die Definition von Absichten. Verwenden Sie den Kontext nennen-Komponenten über intents. Zum Beispiel, verwenden Sie:
Aber in der Regel rufen Sie diese Methoden in Ihrem Aktivitäten und Dienstleistungen, erstreckt Kontext. Also, nutzen Sie einfach: