|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Полный сброс приложения, реинициализация
Привет.
Даже не знаю, как задать правильно вопрос. Понимаю, что это похоже на бред, но тем не менее... Есть ли способ полностью закончить работу приложения, очистить память и запустить его заново в пределах одной сессии запуска? Подробнее. Я разрабатывал плеер. В нем есть некоторые глобальные объекты, которые создаются один раз для всего приложения, типа самого плеера, панели контролов, плагинов, иконок разных интерактивных, статистика. Сейчас возникла необходимость добавить функционал, как в ютубе, чтобы по клику на одной и ссылок все старое убивалось и подгружались заново файл с данными, иконки, плагины,. Если просто удалить все из поля видимости и проапгрейдить нужные данные, то будут утечки памяти. Соответственно, я вижу два выхода: 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, время: 22:23. |
|
« Предыдущая тема | Следующая тема » |
|
|