BlackBerry поддерживает стек экранов; стек отображения .
Экраны выталкиваются в стек и выталкиваются из стека через приложение UiApplication , отвечающее за них. Удаление последнего экрана из стека закрывает приложение по умолчанию .
Если вы запускаете приложение UiApplication с именем MyUiApplication, вы можете добавить экран в стек, вызвав pushScreen (new SomeScreen ()) ;
Экран, если он получен из MainScreen, как и большинство экранов BlackBerry, создается с флагом DEFAULT_CLOSE , означающим, что кнопка ESCAPE на BlackBerry естественным образом закроет экран , вызывая popScreen () для вызова. Конечно, вы можете вызвать popScreen () после любого нажатия клавиши или трекбола / трекбола. Экран также может вызывать close () для себя, что приводит к тому же результату; экран выталкивается из стека, возвращая приложение к предыдущему экрану, или завершает работу приложения, если последний экран выталкивается из стека дисплея.
Если приложение не создано как приложение UiApplication или экран изначально был помещен в стек отображения из потока, не являющегося пользовательским интерфейсом (например, фонового потока), то необходимо убедиться, что вызов закрывает экран также сделано из потока пользовательского интерфейса . Это можно сделать, убедившись, что eventLock берется в классе Application перед выполнением какой-либо операции пользовательского интерфейса (обычно также вызывается invokeLater в это ситуация).
Если исходный экран был вставлен в стек как глобальный экран (немодальный, поверх всех других экранов), то он должен быть удален из стека с помощью чего-то вроде:
Ui.getUiEngine () dismissStatus (это);.
В любом случае переопределение onClose () и close () производного Screen позволит вам перехватить возникающее исключение для отладки и дальнейшего анализа .