Щелчки кнопок GWT очень быстро отстают, используя Places/Activities в GWT2.1

я новичок в Местах и ​​Действиях GWT2.1.

Я использую тот же ActivityMapper, что и в примере ниже, и получаю запаздывающие нажатия кнопок после нескольких навигаций.

В архитектуре MVP, которую я использую, Presenter создает слушателей и определяет интерфейс View, но объекты View являются одиночками.

Моя проблема с отставанием связана с тем, что все слушатели накапливаются в геометрической прогрессии? Должен ли я изменить его так, чтобы View вместо этого создавал всех слушателей? Или мне следует вместо этого попробовать отменить привязку?

Например. в примере GWT2.1 здесь создается новое действие каждый раз, когда вызывается getActivity(Place).

public Activity getActivity(Place place) {
    if (place instanceof HelloPlace)
        return new HelloActivity((HelloPlace) place, clientFactory);
    else if (place instanceof GoodbyePlace)
        return new GoodbyeActivity((GoodbyePlace) place, clientFactory);
    return null;
}

person upshake    schedule 17.11.2010    source источник


Ответы (2)


представление добавляет обработчики событий в свои виджеты. . Позже он вызывает своего ведущего, когда это уместно. Я не думаю, что отвязка событий освободит много памяти или ускорит очередь событий браузера.

Я считаю, что вам следует дополнительно выяснить, является ли фактическое нажатие кнопки медленным, или это создание действий, происходящих в событии, или что-то еще.

person Gipsy King    schedule 17.11.2010
comment
Мое приложение этого не делает (в архитектуре MVP, которую я использую, Presenter создает слушателей и определяет интерфейс View, но объекты View являются синглтонами). Я не уверен, должен ли я реструктурировать свои представления, если проблема заключается в другом. - person upshake; 18.11.2010
comment
Тогда попробуйте отвязать докладчиков. Я знаю, что очень сложно отслеживать такие вещи, как сборка мусора в браузере, но, возможно, вы сможете найти проблему с помощью консоли профилирования Chrome или спидтрейсера. - person Gipsy King; 18.11.2010

В конце концов я изменил архитектуру MVP на такую ​​же, как в примере здесь с View, определяющим Activity, и ViewImpl, содержащим обработчики пользовательского интерфейса. Поскольку Activity больше не содержат обработчиков, а ViewImpls являются синглтонами, проблема исчезает.

person upshake    schedule 19.11.2010