xe5 firemonkey关闭应用程序

在FMX中,由Activity替代了Form的概念,虽然TForm类仍然存在,但MainForm通过关闭函数无法结束程序,使用Application.Terminate均无效,调整为:

uses 
  FMX.Platform.Android;

procedure TForm2.SpeedButton1Click(Sender: TObject);
begin 
  MainActivity.finish; 
end; 

此时程序直接关闭了,如果需要在退出前询问一下,可以参考VCL中的做法,在按钮事件中仍然使用关闭函数,在OnCloseQuery事件中询问是否退出,在OnClose事件中实现程序的关闭,如下:

uses 
  FMX.Platform.Android;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin 
  {退出程序} 
  MainActivity.finish; 
end;

procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin 
  if MessageDlg('是否退出?', 
    TMsgDlgType.mtConfirmation, 
    [TMsgDlgBtn.mbOK, TMsgDlgBtn.mbCancel], 
    -1) = mrOK then 
    CanClose := true 
  else 
    CanClose := false; 
end;

procedure TfrmMain.btncloseClick(Sender: TObject);
begin 
  Close; 
end; 

procedure TfrmMain.FormKeyDown(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);
begin

  //当按下硬件键盘的返回按钮时,关闭当前窗体
  if Key = vkHardwareBack then
    Close;
end;

在虚拟机中运行如下:

image

delphi 关闭Android安卓程序,后台运行
procedure SetBack(const AAction : JString); //后台运行。。
var
Intent: JIntent;
begin
Intent:= TJIntent.JavaClass.init(AAction);
intent.addCategory(TJIntent.JavaClass.CATEGORY_HOME);
Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
SharedActivityContext.startActivity(Intent);
end;

 

调用SetBack(TJIntent.JavaClass.ACTION_MAIN);


关闭程序
引用:FMX.Platform.Android这个单元
调用:MainActivity.finish

http://blog.csdn.net/syndicater/article/details/16946263

原文地址:https://www.cnblogs.com/findumars/p/6358496.html