Проблемы повторного использования объекта HTTPService - PullRequest
0 голосов
/ 22 октября 2009

Я пытаюсь повторно использовать объект HTTPService в гибком приложении, но столкнулся с проблемой. В обработчике для ResultEvent.RESULT я удаляю слушателя, но он не удаляется. Мне нужно поймать asyncToken из send () и прикрепить новое свойство, чтобы я знал, что он должен делать в обработчике.

Я настроил пример здесь: http://www.152.org/flex/
Вы можете щелкнуть правой кнопкой мыши и просмотреть источник.

Кто-нибудь еще сталкивался с проблемой, когда слушатели не удаляются? Разве HTTPService не может быть повторно использован?

Ответы [ 3 ]

3 голосов
/ 23 октября 2009

Нельзя удалить прослушиватели событий, добавленные в тег mxml. Liveocs говорит:

Вы можете удалить только тех слушателей событий, которые были добавлены с помощью метода addEventListener () в блоке ActionScript. Вы не можете удалить прослушиватель событий, определенный в теге MXML

Определите ваши HTTPService объекты в ActionScript (creationComplete приложения) и добавьте прослушиватели событий, используя метод addEventListener, чтобы вы могли вызвать removeEventListener для их повторного использования.

0 голосов
/ 19 декабря 2009

Сегодня я столкнулся с этой проблемой в приложении, которое работало хорошо в течение нескольких месяцев. После нескольких часов отладки я обнаружил, что недавнее обновление настроек гибкого компилятора с 3.1 до 3.4 было причиной. На данный момент я восстановил 3.1 как среду компиляции, чтобы мой проект продолжал работать.

На мой взгляд, это серьезная ошибка, появившаяся спустя некоторое время после Flex 3.1, надеюсь, Adobe скоро исправит ее. Я постоянно использую HTTPService во всем своем коде, и эта ошибка делает версию 3.4 неработоспособной для меня.

Надеюсь, это поможет.

0 голосов
/ 23 октября 2009

Нет гарантии, что прослушиватель событий будет удален. Попробуйте сделать его слабым обработчиком событий при установке его на свой объект. Есть большая вероятность, что GC Flex освободит это, когда вы удалите его.

...