我在Delphi XE8的Android应用程序中尝试下一个代码;
function CheckInternet(idTCP: TIdTCPClient): boolean;
begin
try
idTCP.ReadTimeout := 4000;
idTCP.ConnectTimeout := 4000;
idTCP.Port := 80;
idTCP.Host := 'google.com';
idTCP.Connect;
idTCP.Disconnect;
result:=true;
except
result:=false;
end;
end;
然后,如果互联网连接可用,我会检查主要表格;
if Not CheckInternet(IdTCPClient1) then
MessageDlg('Internet connection not available', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbOK], 0, procedure(const AResult: TModalResult) begin Application.Terminate; end);
在4.x和5.x等Android版本中运行良好,但在Android版本6.x中,程序退出时不显示任何消息,否则如果不检查互联网连接,则会显示消息。 拜托,有没有人知道这个问题?。
使用匿名线程也不起作用;
TThread.CreateAnonymousThread(procedure
begin
try
IdTCPClient1.ReadTimeout := 4000;
IdTCPClient1.ConnectTimeout := 4000;
IdTCPClient1.Port := 80;
IdTCPClient1.Host := 'google.com';
IdTCPClient1.Connect;
IdTCPClient1.Disconnect;
except
MessageDlg('Internet connection not available', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbOK], 0,
procedure(const AResult: TModalResult) begin TThread.CurrentThread.Free; Application.Terminate; end);
end;
end).Start;
更新了代码;
TThread.CreateAnonymousThread(procedure
begin
IdTCPClient1.ReadTimeout := 4000;
IdTCPClient1.ConnectTimeout := 4000;
IdTCPClient1.Port := 80;
IdTCPClient1.Host := 'google.com';
IdTCPClient1.Connect;
IdTCPClient1.Disconnect;
TThread.CurrentThread.OnTerminate := AnonymousThreadTerminate;
end).Start;
procedure AnonymousThreadTerminate(Sender: TObject);
begin
MessageDlg('Internet connection not available', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbOK], 0, procedure(const AResult: TModalResult) begin Application.Terminate; end);
end;
非常感谢和问候。