Я разработал приложение для 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