在Delphi XE8上,我有简单的功能来检查互联网连接:
function TForm1.Internet: boolean;
begin
result:=false;
try
IdTCPClient1.ReadTimeout:=2500;
IdTCPClient1.ConnectTimeout:=2500;
IdTCPClient1.Port:=80;
IdTCPClient1.Host:='google.pl';
IdTCPClient1.Connect;
IdTCPClient1.Disconnect;
result:=true;
except
result:=false;
end;
end;
在旧的Android版本中,一切正常,但在andoid 6中,当我调用IdTCPClient1.Connect时应用程序崩溃(关闭)。 然后我了解到这是阻塞函数,它必须在工作线程中,所以我写了这样的东西:
type
TTest = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
并在实施部分中:
procedure TThread.Execute;
begin
try
Form1.IdTCPClient1.ReadTimeout:=2500;
Form1.IdTCPClient1.ConnectTimeout:=2500;
Form1.IdTCPClient1.Port:=80;
Form1.IdTCPClient1.Host:='google.pl';
Form1.IdTCPClient1.Connect;
Form1.IdTCPClient1.Disconnect;
except
showmessage('no internet connection');
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Test : TTest;
begin
Test := TTest.Create(False);
end;
但不幸的是,当我调用TForm1.Button1Click时,应用程序仍在关闭android 6(在Windows和较旧的Android版本上运行正常) 请帮帮我;)