• 0
FeLDMARShaL

TVertScrollBox+Android+Delphi_XE10

Вопросы

Пытаемся пробовать переходить с XE8.1 на XE10. (под iOS багов пока не замечено, уже залили приложение в AppStore). А вот с Андройдом не так все хорошо.

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

Точного кол-ва контролов для наблюдения бага не помню, но примерно это число около 40. (т.е. не так уж и много). Причем при 39 контролах все идеально, а после добавления 40 контрола начинается ахтунг.

На XE8.1 такого не наблюдается, поэтому для компилации под iOS используем 10, а для Android 8.1. Хотелось бы уже полностью перейти на 10. Есть идеи из за чего такое может происходить?

Пробовал VertScrollBox поменять на обычные ScrollBox результат такой же. П.С. использу стили, может такое поведения быть вызвано плохим переходом от одного стиля к другому?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 ответов на этот вопрос

  • 0

Ради эксперимента пробовал на ScrollBox кидать (runtime) достаточное кол-во объектов (TRectangle) - более 100. Правда стили не использовал. На 4 аппратах (2013, 2014, 2010 годов), т.е. с разными процессорами  и ОЧЕНЬ разной производительностью проблем с вылетом или тормозами не заметил. Так - что: 

1) Какие контролы кидаете?  это вычеркнул, не внимательно прочел в Вашем посте...

2) Попробуйте отключить стили

3) Если контролы "кидаете" в рантайм - проверьтесь на освобождение ресурсов, выход за рэйндж и пр.

Изменено пользователем Andy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

проблема со стилями, нельзя использовать стили от xe8 в проекте seattle, попробуйте заменить похожим из 10-ки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Попробуйте еще использовать новый скролл бокс TPresentedScrollBox. Он лучше настраивается и у него есть новый режим без вычисления размера контента автоматически. Это позволяет немного ускорить его работу в случае, когда вы добавляете или двигаете контролы внутри.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Controls.Presentation,
  FMX.StdCtrls, FMX.Layouts;

type
  TForm1 = class(TForm)
    VertScrollBox1: TVertScrollBox;
    bOrderExample: TButton;
    procedure FormCreate(Sender: TObject);
  private
    procedure CreateButton();
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.CreateButton;
var
  newButton: TButton;
begin
  newButton := TButton.Create(bOrderExample);
  newButton.BeginUpdate;
  newButton.Align := bOrderExample.Align;
  newButton.Size := bOrderExample.Size;
  newButton.EndUpdate;
  newButton.Parent := VertScrollBox1;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 1 to 50 do
    CreateButton;
end;

end.

VertScrollBox1 имеет позиционирование по всей форме, в нем находится кнопка bOrderExample, она имеет позиционирование по верху.

При старте проекта динамически создаю 50 кнопок, которые также как и первая создаются внутри скрол панели. При попытки проскролить панель, при попытке повернуть экран приложение либо зависает намертво либо вообще вылетает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Если Вас не затруднит, установите пожалуйста мой апк на Ваш телефон и сообшите результат (поскроллируйте панель, попереворачивайте экран)

https://drive.google.com/file/d/0Bwau2DWuKoCJWDBnU1plYXF2M2s/view?usp=sharing

 

А также не могли бы Вы выложить свой апк на котором все работает, я попробую его установить себе.

 

p.s. напомню, что проект компилится в Delphi 10 Seattle.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Controls.Presentation,
  FMX.StdCtrls, FMX.Layouts;

type
  TForm1 = class(TForm)
    VertScrollBox1: TVertScrollBox;
    bOrderExample: TButton;
    procedure FormCreate(Sender: TObject);
  private
    procedure CreateButton();
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.CreateButton;
var
  newButton: TButton;
begin
  newButton := TButton.Create(bOrderExample);
  newButton.BeginUpdate;
  newButton.Align := bOrderExample.Align;
  newButton.Size := bOrderExample.Size;
  newButton.EndUpdate;
  newButton.Parent := VertScrollBox1;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 1 to 50 do
    CreateButton;
end;

end.

VertScrollBox1 имеет позиционирование по всей форме, в нем находится кнопка bOrderExample, она имеет позиционирование по верху.

При старте проекта динамически создаю 50 кнопок, которые также как и первая создаются внутри скрол панели. При попытки проскролить панель, при попытке повернуть экран приложение либо зависает намертво либо вообще вылетает.

"при попытке повернуть экран" У меня такая проблема возникла при установки стиля через стайлбук

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ребят помогите , немного не по теме но все же не нашел в гугле ответ.

У меня на VertScrollBox несколько layout лежит и на них применен ShadowEffect как сделать что бы эффект при скроле тоже двигался а не стоял на месте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 15.02.2016 в 17:01, AlexRusSoft сказал:

"при попытке повернуть экран" У меня такая проблема возникла при установки стиля через стайлбук

В манифесте проверь, чтобы было |screenSize

Сам столкнулся при переходе в seattle.

android:configChanges="orientation|keyboard|keyboardHidden|screenSize

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу