2012-03-30 9 views
3

In Blackberry-Entwicklung (ich spreche von BB OS 6 +), wenn ich einen anderen Bildschirm auf eine Schaltfläche klicken angezeigt werden soll, habe ich gesehen, dass ich eine der folgenden Methoden, es zu tun verwenden können:Unterschied zwischen diesen beiden Methoden beim Anzeigen eines Bildschirms?

getScreen().getUiEngine().pushScreen(new MyScreen()); 

und

UiApplication.getUiApplication.pushScreen(new MyScreen()); 

zeigen Beide oben genannten Methoden, um den neuen MyScreen Bildschirm erfolgreich. Aber was ist der Unterschied zwischen diesen beiden? Oder sind sie gleich?

Hinweis: Was ich speziell frage ist, ob sie sich anders verhalten (auf Ressourcen) und ob sie Methodenaufrufe auf die gleiche Weise behandeln oder nicht. Und haben sie erkennbare Auswirkungen auf die Endnutzer?

Danke.

+1

Überprüfen Sie, ob ihre Stack-Trace identisch ist (machen sie eine Ausnahme werfen, fangen und die Stack-Trace drucken). Meine Vermutung ist, dass sie irgendwann den gleichen Code anrufen. – mrvincenzo

+0

@MrVincenzo OK, das ist meine Vermutung auch. Aber ich dachte, dass die Art, wie sie mit Ressourcen umgehen, anders ist. Wie auch immer, danke für deinen Hinweis! – Roshnal

Antwort

4

Die erste Methode wird den Bildschirm auf den Stapel schieben, der der Anwendung zugeordnet ist, die den Bildschirm "besitzt", der das Feld enthält (ich nehme an, dass Sie Field.getScreen() aufrufen).

Die zweite Methode wird der Bildschirm auf den Stapel der Anwendung drücken, dass der Thread „besitzt“, die mit Systemanwendungen UiApplication.getUiApplication() ...

Sofern Sie sind dabei einige komplexe Hintergrundverarbeitung oder die Interaktion ausführt durch ApplicationMenus oder einige Listener.

Der primäre Effekt ist, auf welche Ressourcen in jedem Fall zugegriffen werden kann. Wenn Sie anwendungsspezifische Singletons verwenden, wirken sich diese Unterschiede letztendlich auf Ihr Programm aus. Dies ist einer der Gründe, warum RIM die Verwendung von System-Einzelzeigern mit RuntimeStore oder PersistentStore empfiehlt.

Mein experperiences ein bestimmtes Programm meine Hilfe Entwicklung: http://www.hrbuckley.net/2012/03/blackberrry-singletons-application.html

+0

Vielen Dank! So ist zum Beispiel die Verwendung von UiApplication.getUiApplication() .... besser für Ressourcen für meine Anwendung? – Roshnal

+0

Das hängt wirklich davon ab, was Sie versuchen zu tun. Manchmal wird UiApplication.getUiApplication() Ihren Code an Ressourcen leiten, die Sie nicht möchten. Mein Blogpost, der auf einem Programm basiert, an dem ich gerade arbeite, kann Ihnen dabei helfen. Ich bearbeite die URL in meine Antwort. – Richard

+0

Danke nochmal! Ich werde sicher sein, dein Blog zu überprüfen .. – Roshnal

Verwandte Themen