• 0
Janex72

Delphi + Android тормоза

Вопросы

Привет всем.
Сделал маленькую апликацию для Андроида. Апликация принимает данные
через BlueToothLE и на на двух TLabel показывает цифорки ...
Обём данных маленькии, одна посылка около 20 баитов.
Если данны приходит с интервалом 100 мс, то TLabel-а ешё успевают отобразить информацию,
а если интервал уменьшить, то приходит копец :(
Данные заливаются в буффер BlueTooth-а и TLabel-а неуспевают их показать, тоесть,
можем послать данные, скажем, пол минуты, потом даже отрубить BlueTooth посылаюшее их и
данные на TLabel-а ешё минуту мигают - отображаются ...

Поставил ешё Gauge от TMS Components - там тормоза вообше ужас, если 2 цифри за секунду
отобразить на циферблате, то ето уже предел ...

Шас немогу понять - телефон у меня тормознутыи какои то (CAT-S30, новыи, незагруженыи) или
всётаки FMX контролы работают так ужасно медленно ...

WBR
Janex

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

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


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

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

  • 0

Делать так:

TThread.Synchronize(TThread.CurrentThread, procedure
begin
  Label1.Text:=Значение;
end);

А Label лучше заменить на TText

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
31 минуту назад, Janex72 сказал:

а если интервал уменьшить, то приходит копец

Вы обладатель великолепнейшего зрения, реакции и т.п. если в состоянии распознать и проанализировать за 100мс содержимое экрана :)

На самом деле эта проблема аналогична "хочу, чтобы показывалось все 100500 записей" - пользователь физически не сможет оценить всё то, что вы ему отображаете + получается, что сильно нагружается система абсолютно ненужными действиями.

Логируйте значения, сохраняйте их в БД, проводите внутренние манипуляции в реальном времени.

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
18 минут назад, kami сказал:

Вы обладатель великолепнейшего зрения, реакции и т.п. если в состоянии распознать и проанализировать за 100мс содержимое экрана :)

На самом деле эта проблема аналогична "хочу, чтобы показывалось все 100500 записей" - пользователь физически не сможет оценить всё то, что вы ему отображаете + получается, что сильно нагружается система абсолютно ненужными действиями.

Логируйте значения, сохраняйте их в БД, проводите внутренние манипуляции в реальном времени.

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

Да, вы правы, 10 раз в секунду менять значение излышно, но смушает скорость отображения ... Если мне на форме будет, на пример, 50 лабелов и каждыи меняет

текст раз в секунду, то каждому лабелу свои поток делать, что ли ? А то обновить за секунду 50 лабелов качется невозможно ...

 

 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Только что, Janex72 сказал:

то каждому лабелу свои поток делать, что ли

нет. Вся работа с визуальными компонентами - только в основном потоке. Только. Если вы пытаетесь работать в доп.потоке, то как сказал @Rusland - нужно оборачивать в Synchronize. Или Queue. Обязательно. Любой из этих двух методов производит переключение в основной поток. и изменение текста+отображение будет идти именно в нем.

Надо учитывать, что эти два метода синхронизации с основным потоком дают накладные расходы по времени работы.

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


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

тут же все уже написано выше

все данные складывайте в переменные

и без всяких потоков. одним простым таймером выводите значения переменных на экран раз в 300-500 мсек

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


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

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

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

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

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

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

Войти

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

Войти


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

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