Korrekte Verwendung von Classloader (insbesondere bei Android)

Las ich einige Dokumentationen über classloadern, aber ich bin immer noch nicht sicher, wo und warum Sie gebraucht werden. Die Android-API sagt:

Lädt Klassen und Ressourcen aus einer
repository. Eine oder mehrere class loader
installiert sind zur Laufzeit. Diese sind
konsultiert, wenn die runtime-system
Bedürfnisse einer bestimmten Klasse, die noch nicht
verfügbar im Speicher.

Wenn also verstehe ich das richtig, es gibt viele classlaoders, die verantwortlich für das laden von neuen Klassen. Aber wie entscheidet das system, welche zu benutzen? Und in welcher situation sollte ein Entwickler instanziieren, eine neue classloader?

In der Android-API für Vorsatz gibt es eine Methode,

public void  setExtrasClassLoader  (ClassLoader  loader)

Die Beschreibung sagt:

Setzt den ClassLoader verwendet werden
beim unmarshalling alle Parcelable
Werte aus der extras von dieser Absicht.

Kann ich also definieren, gibt es einen speziellen classloader, so dass ich pass-Objekt mit einer Absicht, die nicht definiert sind, in die empfangende Aktivität? Ein Beispiel:

Wenn Eine Aktivität die sich im Projekt (in Eclipse) definiert ein Objekt, das will ich senden zur Aktivität B in Projekt B mit putExtra dem Intent-Objekt. Wenn das Objekt, das senden über die Absicht ist nicht definiert (source-code im Projekt B), dann gibt es eine NoClassDefFoundException. So kann ich mit der Methode setExtraClassloader zu vermeiden, diese Ausnahme? Wenn ja, wie kann ich entscheiden, welche classloader-Objekt, ich-pass? Und wie instanziiere ich es richtig?

InformationsquelleAutor | 2010-05-09
Schreibe einen Kommentar