Я столкнулся с проблемой памяти, используя FileReference.save(). Приложение My Flash генерирует большое количество данных в реальном времени и должно сохранять эти данные в локальном файле. Насколько я понимаю, Flash 10 (в отличие от AIR) не поддерживает потоковое воспроизведение в файл. Но хуже то, что FileReference.save() дублирует все данные перед сохранением. Я искал обходной путь к этому удвоенному использованию памяти и думал о следующем подходе:FileReference.save() duplicates ByteArray
Что делать, если я передаю собственный подкласс ByteArray в качестве аргумента FileReference.save(), где этот подкласс ByteArray переопределит все прочитанные *(). Переопределенные методы read *() будут ждать, когда часть моего файла будет сгенерирована моим приложением, вернет эту часть данных и немедленно удалит ее из памяти. Я знаю, сколько данных будет сгенерировано, поэтому я мог бы также переопределить методы length/bytesAvailable.
Возможно ли это? Не могли бы вы дать мне подсказку, как это сделать? Я создал подкласс ByteArray, зарегистрировал для него псевдоним, передал экземпляр этого подкласса в FileReference.save(), но каким-то образом FileReference.save(), кажется, относится к нему так же, как к экземпляру ByteArray, и не делает позвоните по любому из моих переопределенных методов ...
Большое спасибо за любую помощь!
К сожалению, это не решает мою проблему. Если я использую URLLoader для загрузки данных, мне нужно передать URLLoader.data в FileReference.save(), который снова будет дублировать URLLoader.data. Таким образом, это приведет к тому, что данные будут храниться дважды в памяти, что мне нужно избежать ... – bartekb
О, извините, по какой-то причине я думал, что вы пытаетесь сохранить на сервере. Возможно, я зарегистрирую ошибку в JIRA о хранящихся данных дважды? В противном случае ... Я думаю, что FileReference.save - это ваш единственный способ записи на локальный диск. – quoo