Jump to content

TfgAsset.ReleaseFromMemory - выгрузка из памяти работает!


Recommended Posts

По "демо проекту": "Ресурсы" -> "Изображения" -> "Выгрузка изображений из памяти" сделал каталог.
В "Assets Manager" загрузил изображения 292 страниц каталога.

Без включения выгрузки из памяти, при прокрутке на 26 странице возникает ошибка нехватки памяти.

После включения выгрузки из памяти прокручиваются все 292 страницы. Спасибо, прекрасно работает!

TfgAssetsManager.Current.AutoreleaseOptions.Enabled := True;

 

87.png 0003.png

  • Thanks 1
Link to comment
Share on other sites

  • Administrators

Могу только сказать, что выглядит круто! ?

И рад, что инструмент работает и реально помогает.

А еще хочу отметить функционал просмотра страниц с зумом. Как доделаете приложение, обязательно опубликуйте его описание в разделе:
https://forum.fgx-native.com/forum/63-публикация-проектов-клиентов/

Link to comment
Share on other sites

Спасибо "sinuke" https://forum.fgx-native.com/profile/7-sinuke/ за публикацию проекта "Проверка контрольных знаков" и исходного кода в общий доступ: https://github.com/sinuke/excises
Там я смотрел, как правильно добавлять, вызывать и закрывать дополнительные формы в свой проект. Эту тему можно вынести и на вебинары по обзору возможностей библиотеки. 

Добавил вызов формы просмотра выбранной страницы каталога:

procedure TfmCatalog.ShowCatalogPage;
begin
  fmCatalogPage := TfmCatalogPage.Create(Self);
  fmCatalogPage.IsAnimating := True;
  TfgAnimationHelper.ShowForm(fmCatalogPage, [TfgAnimationOption.StartFromCurrent], ANIMATION_DIRATION,
    procedure
    begin
      fmCatalogPage.IsAnimating := False;
    end);
end;

По "демо проекту": "Компоненты" -> "TfgCollectionView" -> "Выделение" сделал вызов формы просмотра выделенной страницы каталога:

procedure TfmCatalog.cvCatSelectionChanged(Sender: TObject; const ASelectedItems: TArray<System.Integer>);
var
  ItemIndex: Integer;
begin
  for ItemIndex in ASelectedItems do
  begin
    CatalogPage := ItemIndex + 1;
    ShowCatalogPage;
  end;
end;

По "демо проекту": "Жесты" -> "Жест "Zoom" - увеличение масштаба" без изменения кода примера добавил функционал просмотра страницы каталога с Zoom:

procedure TfmCatalogPage.imCatPageZoom(Sender: TObject;
  const AZoomInfo: TfgZoomInfo);
begin
  if AZoomInfo.Phase = TfgGesturePhase.&InProgress then begin
    imCatPage.PositionMode := TfgImage.DefaultPositionMode;
    imCatPage.Size.SetSizeF(AZoomInfo.InitialSize.cx * AzoomInfo.Scale, AZoomInfo.InitialSize.cy * AzoomInfo.Scale);
    imCatPage.Position.Point := imCatPage.LocalToForm(AZoomInfo.Focus) - AZoomInfo.InitialFocus * AzoomInfo.Scale;
    imCatPage.Realign;
  end;
end;

 

  • Like 2
  • Thanks 2
Link to comment
Share on other sites

Первая версия каталога, которая работала пару месяцев, у меня была сделана по "демо проекту": "Ресурсы" -> "Изображения" -> "Асинхронная загрузка изображения по URI".
На хостинг я выкладывал новые *.jpg страниц каталога, и они открывались в приложении без обновления приложения. 
Это тот способ обновления, который использует официальное приложение от компании "Фаберлик". Приложение по размеру маленькое, все тащит через интернет.
Навигация по страницам каталога: "<< Первая", "< Предыдущая", "Следующая >", "Последняя >>" и "Введите номер", какую страницу показать.

Про клиентов приложения - это девушки, которые выбирают товар, рекламируют, продают его везде и всегда, "сетевики", ну и новые клиенты, которые готовы листать этот каталог вдоль и поперек часами, выискивая выгодные цены.
Они часто листают каталог, где нет хорошего интернета, за городом, на даче, на шашлыках, и туалете, в автобусе, и им надо быстро сразу весь каталог полистать взад - вперед и увеличить где нужно.
Я предложил им второй вариант, где каталог жестко зашит в "Assets Manager". Размер приложения сразу увеличился с 15 Mb до 65 Mb, но зато теперь каталог всегда с ними и они его могут всегда "кручу - верчу - смотрю как хочу", он у них летает.
Для обновления в начале каталога нажимают ссылку на "Google Play" и обновляются без проблем. 
Знают число, когда каталог меняется и я рассылаю по "демо проекту": "Push-уведомления" -> "Получение Push-уведомления" - "Новый каталог, обновите приложение!".
Им этот вариант однозначно больше нравиться. Они ведь всегда по причине нестабильного интернета скачивали себе в "Галерею" каталог в виде фото, это 300 *.jpg рисунков разрешения 902 x 1352.
Каталог менялся, "Галерея" засорялась, они уже путались, это в "Галерее" новый каталог или старый, чистить не все умели, памяти со временем не хватало.
А при обновлении приложения старый каталог гарантированно уйдет из памяти телефона и заменится новым, и не надо "Галерею" чистить потому как каталог в приложении.

Ну и насчет памяти, в смысле стремления сделать приложение как можно меньшего размера. Это как с ассемблером, где каждый байт экономили, по тому как раньше объемы памяти были очень ограниченные.
Сейчас памяти становиться много, экономить уже не нужно, ограничение это уже снимается, важным становиться удобство использования.
Эта ошибка "нехватка памяти" при листании, которую я привел выше возникала на "дохлом" телефоне "Xiaomi Redmi Note 3" без включенной "выгрузки из памяти".
В хороших последних телефонах она не возникает даже при выключенной "выгрузки из памяти", хватает памяти загрузить весь "Assets Manager" и листать его.
Здесь выбор: Приложение либо универсальное, маленькое но медленное, которое обновлять не надо – Либо не универсальное, большое но быстрое, которое обновлять надо. Мои пользователи однозначно выбрали второе.

  • Like 4
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...