Blackberry - Максимальное количество экранов, которые будут помещены в стек пользовательского интерфейса. - PullRequest
2 голосов
/ 05 февраля 2010

Кто-нибудь знает максимум, сколько экранов мы можем вставить в UiApplication без вызова popscreen () и каков будет максимальный размер файла для каждого класса экранов.

Спасибо, что касается Mintu

1 Ответ

7 голосов
/ 06 февраля 2010

ОБНОВЛЕНИЕ согласно комментарию Марка

BB Документация

Cite from How To - Управление взаимодействиями пользовательского интерфейса :

При управлении экранами вашего приложения в стеке пользовательского интерфейса (UI) не допускайте несовпадения pushScreen () и popScreen (). Когда пользователь смартфона BlackBerry завершает взаимодействие с экранами, всплывающие экраны отключаются от стека пользовательского интерфейса; в противном случае, стек дисплея продолжает расти, пока смартфон BlackBerry не исчерпает память. Вы не должны использовать более нескольких модальных экранов за один раз, потому что каждый экран использует поток , и вы не должны выскочить на экран только один раз. Если вы нажимаете на экран слишком много раз, трекбол / трекбол и клавиатура смартфона BlackBerry могут перестать отвечать на запросы.

Цитировать из Что такое - TooManyThreadsError :

Одно приложение может создавать до 16 потоков. Общее количество потоков, которые могут существовать на устройстве BlackBerry из всех приложений, составляет 128. Поэтому, если приложение уже создало 16 потоков, 17-я попытка завершается неудачно и выдается исключение TooManyThreadsError. Аналогично, если на устройстве BlackBerry уже создано 128 потоков и приложение пытается создать другой поток, возникает исключение TooManyThreadsError.

Тестовое приложение

альтернативный текст http://img52.imageshack.us/img52/5937/8300testscrcount.jpg

class PushScr extends MainScreen {
    static int mScrCount = 0;
    Screen mContext = this;    
    public PushScr() {
        mScrCount++;
        add(new LabelField("screen count: " + mScrCount));
        add(new LabelField("threads count: " + Thread.activeCount()));
        add(new LabelField("memory used: "
                + Memory.getRAMStats().getAllocated()));
    }    
    protected void makeMenu(Menu menu, int instance) {
        super.makeMenu(menu, instance);
        menu.add(new MenuItem("push screen", 0, 0) {
            public void run() {
                Ui.getUiEngine().pushScreen(new PushScr());
            }
        });    
        menu.add(new MenuItem("push modal screen", 0, 0) {
            public void run() {
                Ui.getUiEngine().pushModalScreen(new PushScr());
            }
        });
        if (mScrCount > 1) {
            menu.add(new MenuItem("pop screen", 0, 0) {
                public void run() {
                    Ui.getUiEngine().popScreen(mContext);
                }
            });
        }
    }
}

Заключение

Таким образом, в случае модальных экранов максимальное количество равно 16, а общий размер ограничен памятью jvm устройства.
В противном случае это все о объеме памяти SRAM устройства .

...