Dienstag, 5. Januar 2010

Wechseln zwischen Displayables

Ein Blick auf Beispielcode von Nokia zeigt eine mögliche Herangehensweise:

Jeder Screen (jedes Displayable) wird durch eine Klasse implementiert, die direkt vom entsprechenden Displayable, also z.B. List, abgeleitet wird. Der Konstruktor der Klasse erhält eine Referenz aufs MIDlet (also "this" der Klasse, die von MIDlet abgeleitet ist) sowie eine Referenz auf das Displayable, aus dem heraus das neue gestartet werden soll.

Für jemanden mit starkem (nicht mehr ganz taufrischem) C/C++-Background ist das zunächst einmal nicht gerade die offensichtlichste Herangehensweise. Für ein so kleines "Projekt" wie das meinige hier wäre eine globale Variable für die MIDlet-Referenz nicht falsch, da so jede Klasse eine eigene Kopie bekommt.

Da zudem der Control-Flow mit dem Aufruf des Konstruktors der Klasse für den neuen Screen auch an diese neue Klasse übergeht, wäre es aus C++-Sicht nicht offensichtlich, wie die Klasse je "destructed" werden kann. In Java muß sich da wohl schlicht und einfach der Garbage Collector drum kümmern? Referenzen gibt es nach dem Umschalten auf den vorherigen Screen nur noch innerhalb der Klasse selbst (hoffentlich ...). Wäre schön, sowas wie einen Destruktor in Java zu haben, allerdings gibt es in JavaME nicht mal finalize().

... die globale Variable könnte wohl über ein public static-Feld in der Haupt-MIDlet-Klasse nachgebaut werden ...

0 Kommentare:

Kommentar veröffentlichen