![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Привет.
Даже не знаю, как задать правильно вопрос. Понимаю, что это похоже на бред, но тем не менее... Есть ли способ полностью закончить работу приложения, очистить память и запустить его заново в пределах одной сессии запуска? Подробнее. Я разрабатывал плеер. В нем есть некоторые глобальные объекты, которые создаются один раз для всего приложения, типа самого плеера, панели контролов, плагинов, иконок разных интерактивных, статистика. Сейчас возникла необходимость добавить функционал, как в ютубе, чтобы по клику на одной и ссылок все старое убивалось и подгружались заново файл с данными, иконки, плагины,. Если просто удалить все из поля видимости и проапгрейдить нужные данные, то будут утечки памяти. Соответственно, я вижу два выхода: 1. Сделать какой-то сброс и очистить память (но ведь System.gc и известный прием с двумя LocalConnection работает только в дебаг-версии?) 2. Перебирать все классы (их там штук 30-40) и во всех писать методы reset - но ведь это адский труд, да и не факт, что удасться все учесть. Создать новый экземпляр приложения, кстати, не проблема. Проблема в том, как правильно удалить все старое. Какие вы видите решения проблемы с наименьшими трудозатратами? Возможно хотя бы идеи по правильной архитектуре. p.s. Я на 2 дня сейчас уезжаю. Отвечать, если что, пока не смогу. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Может, перегрузить страничку? Или там, не знаю, слой в хтмле с флэшкой.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Цитата:
|
|
|||||
|
Регистрация: Jul 2009
Сообщений: 95
|
40 классов? Действительно, это я бы сказал, мало. А вот когда их около 8 тысяч, вот тут уже беда =)
|
|
|||||
|
Если уж на то пошло, то можно использовать интерфейс например IResetable и подключать его к классам в которых может понадобиться такая реинициализация.
Далее добавить функцию resetHandler в слушатель события от синглтона, например ApplicationEvent.RESET, и в итоге для того чтобы все классы "перезагрузились" вам в одном месте программы достаточно будет сделать
__________________
adobe AS3 manual |
|
|||||
|
Всем спасибо за ответы. В общем-то, похожей картины и ожидал.
Банальный совет "сразу отписываться от всех слушателей" я знаю и применяю, только кто-ж знал, что понадобится такая функция ![]() Окей, буду мучаться. Еще раз спасибо. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|