Delphi RIO Android-приложение заморозить интерфейс - PullRequest
0 голосов
/ 03 октября 2019

Я разработал приложение для Android Delphi RIO.
У меня есть кнопка для выполнения некоторой синхронизации между приложением сервера данных и локальной базой данных.
Чтобы обновить интерфейс, я переместил код винтерфейс TTask и обновите основной интерфейс с помощью Thread.Synchronize.

procedure TdmMain.Syncronize;
begin
  taskSyncro := TTask.Create(
    procedure()
    begin
      SignalUpdateUI('...Syncro Start...');
      // ....... loats of code here
      // connecting to datasnap
      SignalUpdateUI('...Step 1...');
      // insert into local database
      // etc...
      SignalUpdateUI('...Syncro End...');
    end);
  taskSyncro.Start;
end;

procedure TdmMain.SignalUpdateUI(baseMessage: String);
begin
  TThread.Synchronize(nil, procedure
    begin
      // write into memo
      memoLog.Add(baseMessage);
    end
  );
end;

иногда код работает нормально, но иногда зависает в середине процедуры.
Может кто-нибудь указать мне, почему приложение зависает? или какая-либо полезная информация, чтобы выяснить, что исправить?
Я объяснил только основные, но все обновления пользовательского интерфейса сделаны с SignalUpdateUI.

Razvan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...