Delphi D10.X安卓开发中按两次返回键退出系统的方法

在安卓APP应用中,通常按下返回键后会关闭程序,有时候我们为了避免误按返回健导致程序的退出,会对按下返回健进行检测,并要求连续按下两次才退出程序。
在Delphi中开发安卓时,如何检测并实现两次退出APP呢。你可以使用发下方式。

定义变量

首先需要定义一个用于记录按下返回健时间的变量:

  private
    { Private declarations }
    vTiming: Cardinal; // 时间计数

定义常量

其次,为了方便调整按下两次返回健的时间间隔,我们定义一个常量来记录:

const
  CIntervals: Integer = 1800;  //两次按键的间隔时间 毫秒

这里我们给常量定义了1800,也就是1.8秒的时间,表示按两次按健应在1.8秒内完成。那么在实际使用时,可以根据自己的需要来调整这个时间间隔值。

引用Toast

uses
 u_Toast;

这个单元在我上一篇博客里有,请参见:《Delphi D10.X安卓APP开发中简单使用原生Toast》(直接点击前面的内容可跳转查看)
他是为了在按下第一次返回健时给予一个友好的提示。

初始化按健时间

这里,我们是在窗体创建的时候记录下时间:

procedure TForm5.FormCreate(Sender: TObject);
begin
  vTiming := TThread.GetTickCount;
end;

监听窗体按健,实现两次返回健退出程序

procedure TForm5.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  //如果是按下返回键,并且大于间隔时间,则提示
  if (Key = vkHardwareBack) And (TThread.GetTickCount- vTiming> CIntervals) then
  begin
    Key := 0;
    vTiming := TThread.GetTickCount;
    Toast('再按一次退出');
  end;
end;

整体代码

总体的代码量很小,也就不上传演示Demo到下载空间了,大家可以根据这里的讲述在自己的项目里使用。
以下是我Demo的全部代码内容,就没给窗体内容的,窗体上就显示了一个标题,其实也是可以不用的。

unit fMain;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics,
  FMX.Dialogs, FMX.Objects;

type
  TForm5 = class(TForm)
    Text1: TText;
    procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    vTiming: Cardinal; // 时间计数
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

uses
  u_Toast;

const
  CIntervals: Integer = 1800;  //两次按键的间隔时间 毫秒

{$R *.fmx}

procedure TForm5.FormCreate(Sender: TObject);
begin
  vTiming := TThread.GetTickCount;
end;

procedure TForm5.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  //如果是按下返回键,并且大于间隔时间,则提示
  if (Key = vkHardwareBack) And (TThread.GetTickCount- vTiming> CIntervals) then
  begin
    Key := 0;
    vTiming := TThread.GetTickCount;
    Toast('再按一次退出');
  end;
end;

end.

相关文章导读

Delphi D10.X 安卓APP开发中按返回键后程序不退出程序的方法
Delphi D10.X安卓APP开发中简单使用原生Toast
点击上面标题后直接查看

欢迎光顾本人小店:(https://shop63778938.taobao.com/)
小店也提供delphi方面其他技术支持、定制开发。

现在就进店看看

后记

大家有什么不清楚的,可以给我留言讨论

以上信息对您有用的话请点赞收藏,就下面这行

    原文作者:tanqth
    原文地址: https://blog.csdn.net/tanqth/article/details/104713718
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞