Delphi D10.X 安卓APP开发中按返回键后程序不退出程序的方法


本文整理自网络,侵删。

 
在某些时候,我们会希望安卓下运行的程序不退出运行,当按下返回键后,程序退出前台但仍在后台运行,这里给出两个方法:

moveTaskToBack方法

使用方式:

procedure TfMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
{$IFDEF ANDROID}
  if Key = vkHardwareBack then
  begin
    Key := 0;
    TAndroidHelper.Activity.moveTaskToBack(False);
  end;
{$ENDIF}
end;

首先通过 Key = vkHardwareBack判断是否按下的是返回键,如果是,则先把键值设置为0。其次使用moveTaskToBack(False)让程序退出前台显示,到后台继续运行。
函数:
function moveTaskToBack(nonRoot: Boolean): Boolean; cdecl;
其中参数nonRoot表示:
false――只有当前activity是task根,也就是应用启动的第一个activity时,才有效;
true――则忽略这个限制,任何activity都可以有效。
在Delphi里可以忽略这个参数的意义,直接使用False就行了。

模拟Home按键法

使用方式:

procedure TfMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
{$IFDEF ANDROID}
var
  intent: JIntent;
{$ENDIF}
begin
{$IFDEF ANDROID}
  if Key = vkHardwareBack then
  begin
    Key := 0;
    intent := TJIntent.Create;
    intent.setAction(TJIntent.JavaClass.ACTION_MAIN);
    intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
    intent.addCategory(TJIntent.JavaClass.CATEGORY_HOME);
    TAndroidHelper.Context.startActivity(intent);
  end;
{$ENDIF}
end;

这种方式需要使用到意图,同样先检测是否按下了返回键,设置按健值为0.
然后使用意图模拟发送Home,让程序退出前台运行。

需要说明的

这两种方式都可以让程序不关闭的情况下退出前台到后台运行,但并不是说APP应用在后台就可以长时间运行。退到后台后,android系统不会马上关闭这些后台的App应用,而是在系统认为合适的时候,才会去关闭它,比如系统发现手机内存不够了,或是符合手机省电模式规则需要关闭时。


――――――――――――――――

原文链接:https://blog.csdn.net/tanqth/article/details/104672281

相关阅读 >>

Delphi 弹出输入框的inputquery, inputquery 函数用法

Delphi winapi: setlayeredwindowattributes - 设置窗口的透明

进程防杀Delphi版(dll部分)

Delphi源码获取网络图片缓存的地址

Delphi为你的窗体有效地提供剪贴板的相关操作

Delphi的tservice 服务路径获取 dll中获取文件路径

Delphi中用拼音首字符序列来实现检索功能

Delphi timage保存图片到stream及从stream中取图片

Delphi调用游戏call代码

Delphi更新本地时间

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...