Skip to content

Delphi Android close application

La programación para Android ha cambiando mucho con respecto a como veníamos acostumbrados con aplicaciones VCL.

Uno de los cambios es ya no tener el manejo de ventanas, si no el cambio significativo a Activities.

Uno de los problemas que tuve al programar mi primera aplicación en Android fue como cerrar la App en tiempo de ejecución, por ejemplo desde un botón cerrar.

Luego de buscar en la documentación me dí con que es de la misma forma que en las aplicaciones VCL:

// Cerrar aplicación en tiempo de ejecución

Application.Terminate;

Según la docwiki de Embarcadero, FMX.Forms.TApplication.Terminate finaliza la ejecución de la aplicación en FireMonkey.

Se debe llamar a Application.Terminate para finalizar la aplicación mediante programación.

Recuerda que debes tener la unidad FMX.Forms en los Uses de la unidad.

Query close application Android

Ahora, y para no tener perdida de datos o cierres accidentales en la App, deberemos preguntarle al usuario si realmente quiere cerrar la Aplicación.

Para ello, lo podemos hacer en el evento OnCloseQuery del Formulario.

Tengamos en cuenta que el comando Application.Terminate cierra la aplicación sin importar lo que quiera el usuario, entonces debemos utilizar el comando Close.

Y en el evento OnCloseQuery colocamos el siguiente código:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := False;
  MessageDlg('Está seguro de salir de la Aplicación?', TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0,
    procedure(const AResult: TModalResult)
    begin
      if AResult = mrYes then
        Application.Terminate;
    end
  );
end;

Lo que hacemos es preguntarle al usuario mediante un procedimiento asíncrono, si desea cerrar la aplicación, y si la respuesta es positiva, recién allí ejecutamos el comando Application.Terminate.

De lo contrario colocamos la variable CanClose := False lo que devuelve el curso normal de la aplicación.