在安卓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方面其他技术支持、定制开发。
后记
大家有什么不清楚的,可以给我留言或讨论。
以上信息对您有用的话请点赞收藏,就下面这行