gpt4 book ai didi

android - Delphi XE5 Android 应用程序应该在线程内处理耗时任务吗?

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:56 24 4
gpt4 key购买 nike

我只是 Delphi XE5 Android 应用程序开发的新手。

在主进程处理一些耗时的任务时,毛皮点击屏幕(不断地反复点击屏幕)导致应用程序异常结束。

我猜这是因为所谓的“应用程序无响应”,并通过下面的代码块证实了我的猜测。

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Text := 'Start'; // Text is 'Button1' on design time
sleep(10000);
Button1.Text := 'OK';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.Text := 'Start'; // Text is 'Button2' on design time
TThread.CreateAnonymousThread(
procedure()
begin
Sleep(10000);
TThread.Synchronize(TThread.CurrentThread,
procedure
begin
Button2.Text := 'OK';
end);
end).Start;
end;

对于 Button1,连续点击会导致 ANR。当我从应用程序堆栈恢复应用程序时,Button1 的文本显示“Button1”。看起来 Button1Click 的过程被倒带了。相反,在 Button2 的情况下,连续的标签不会导致 ANR。

我从未在 Windows 应用程序的开发中使用过线程。这是在线程中(而不是在主线程中)处理耗时任务的正常方式吗?或者还有其他解决方法吗?

最佳答案

线程是解决这个问题的正确方法。如果您希望避免系统确定您的应用程序无响应,则主线程需要响应。对于移动平台和桌面平台都是如此。

因此,将所有长时间运行的任务移至线程中,从而使您的主线程保持响应。

关于android - Delphi XE5 Android 应用程序应该在线程内处理耗时任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26904048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com