Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.07.2012, 11:33
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 1  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
По умолчанию Полный сброс приложения, реинициализация

Привет.

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

Подробнее. Я разрабатывал плеер. В нем есть некоторые глобальные объекты, которые создаются один раз для всего приложения, типа самого плеера, панели контролов, плагинов, иконок разных интерактивных, статистика.
Сейчас возникла необходимость добавить функционал, как в ютубе, чтобы по клику на одной и ссылок все старое убивалось и подгружались заново файл с данными, иконки, плагины,.

Если просто удалить все из поля видимости и проапгрейдить нужные данные, то будут утечки памяти.
Соответственно, я вижу два выхода:
1. Сделать какой-то сброс и очистить память (но ведь System.gc и известный прием с двумя LocalConnection работает только в дебаг-версии?)
2. Перебирать все классы (их там штук 30-40) и во всех писать методы reset - но ведь это адский труд, да и не факт, что удасться все учесть.

Создать новый экземпляр приложения, кстати, не проблема. Проблема в том, как правильно удалить все старое.
Какие вы видите решения проблемы с наименьшими трудозатратами? Возможно хотя бы идеи по правильной архитектуре.

p.s. Я на 2 дня сейчас уезжаю. Отвечать, если что, пока не смогу.
__________________
сайт, vk

Старый 04.07.2012, 12:08
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Может, перегрузить страничку? Или там, не знаю, слой в хтмле с флэшкой.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 04.07.2012, 12:49
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
2. Перебирать все классы (их там штук 30-40) и во всех писать методы reset - но ведь это адский труд, да и не факт, что удасться все учесть.
Это нужно делать сразу же при написании классов, а не когда уже все готово. Добавляется слушатель? Тут же добавить в деструкторе уго удаление. Затратить изначально чуть больше времени, зато потом избавить себя от кучи проблем. А сейчас единственный рабочий вариант уже предложил -De-

Старый 04.07.2012, 12:54
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 4  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
40 классов совсем не много, так что за денёк перепишете.
__________________
:)

Старый 04.07.2012, 14:22
tofflife вне форума Посмотреть профиль Отправить личное сообщение для tofflife Найти все сообщения от tofflife
  № 5  
Ответить с цитированием
tofflife

Регистрация: Jul 2009
Сообщений: 95
40 классов? Действительно, это я бы сказал, мало. А вот когда их около 8 тысяч, вот тут уже беда =)

Старый 04.07.2012, 14:33
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 6  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Если уж на то пошло, то можно использовать интерфейс например IResetable и подключать его к классам в которых может понадобиться такая реинициализация.

Далее добавить функцию resetHandler в слушатель события от синглтона, например ApplicationEvent.RESET, и в итоге для того чтобы все классы "перезагрузились" вам в одном месте программы достаточно будет сделать
Код AS3:
_facade.dispatchEvent(new ApplicationEvent(ApplicationEvent.RESET));
__________________
adobe AS3 manual

Старый 05.07.2012, 23:30
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 7  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
Всем спасибо за ответы. В общем-то, похожей картины и ожидал.
Банальный совет "сразу отписываться от всех слушателей" я знаю и применяю, только кто-ж знал, что понадобится такая функция
Окей, буду мучаться. Еще раз спасибо.
__________________
сайт, vk

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 07:57.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.