это хорошая идея для хранения растровых изображений в качестве временных файлов для реализации функции отмены и повтора? - PullRequest
2 голосов
/ 08 ноября 2010

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

Ответы [ 3 ]

2 голосов
/ 08 ноября 2010

Зависит от вычислительной мощности и продолжительности истории отмен, которую вы хотите сохранить. Если вы можете применить преобразования с разумной скоростью, вы можете просто сохранить копию растровых операций x назад, а в случае отмены просто применить к ней последние преобразования x-1.

2 голосов
/ 08 ноября 2010

Независимо от того, есть ли у вас место в куче, сохранение состояния отмены в вашем постоянном хранилище (не временных файлах) - ваш единственный выбор.Пользователь может покинуть ваше приложение, после чего ваш процесс может быть убит.По возвращении вам необходимо перезапустить приложение с тем же состоянием, которое они видели в последний раз.Все, что у вас было в вашей куче, больше не будет там;Вы не можете помещать большие растровые изображения в Bundle в onSaveInstanceState ().Поэтому вам нужно поместить их в постоянное хранилище.

Просто убедитесь, что вы не блокируете пользовательский интерфейс при этом - пишите новое состояние асинхронно от обновления пользовательского интерфейса.

2 голосов
/ 08 ноября 2010

Как быстро нужно, чтобы отмена произошла?Помните: память быстрее, чем что-либо еще.

Сколько растровых изображений вам нужно, чтобы иметь возможность вернуться и отменить?Если это много, то да, временные файлы могут быть лучшими.

Что если они закроют приложение и вернутся позже (или приложение будет убито, чтобы освободить память)?Насколько важно добраться до этих отмен?Если это важно, то вам нужно сохранить их на диск.

Насколько велики изображения?Это также может повлиять на ваше решение о том, сколько вы могли бы в памяти.

Возможно, даже рассмотреть некоторые из них?Сохранить самую последнюю в памяти и сохранить ее и все остальные на диск?

...