Android实例-程序切换到后台及从后台切换到前台

时间:2023-12-04 22:41:14

Android实例-程序切换到后台及从后台切换到前台

相关资料:

http://www.delphitop.com/html/Android/2933.html

程序包下载:

http://download.csdn.net/detail/zhujianqiangqq/9649918

注意事项:

使用moveTaskToBack/moveTaskToFront需要应用程序有reorder tasks授权,如果没有权限,执行时程序会闪退。

实例代码:

 unit Unit1;

 interface

 uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.ScrollBox, FMX.Memo; type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Label1: TLabel;
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation
uses
Androidapi.JNI.App,//需要引入
Androidapi.JNI.GraphicsContentViewText,//需要引入
Androidapi.Helpers,//需要引入
Androidapi.JNI.JavaTypes,//需要引入
Androidapi.JNIBridge;//需要引入 //使用moveTaskToBack/moveTaskToFront需要应用程序有reorder tasks授权,如果没有权限,执行时程序会闪退。 {$R *.fmx}
//方法一:隐藏程序
procedure No1SendAppToBack;
var
intent:JIntent;
begin
intent:= TJIntent.Create;
intent.setAction(TJIntent.JavaClass.ACTION_MAIN);
intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(TJIntent.JavaClass.CATEGORY_HOME);
SharedActivityContext.startActivity(intent);
end; //方法二:获得活动管理器
function SharedActivityManager: JActivityManager;
var
AService: JObject;
begin
AService := SharedActivityContext.getSystemService(TJContext.JavaClass.ACTIVITY_SERVICE);
Result := TJActivityManager.Wrap((AService as ILocalObject).GetObjectID);
end; //方法二:隐藏程序
procedure No2SendAppToBack;
begin
//网上说XE7是支持的,但是我用XE8不知道为什么不行。
// SharedActivityManager.moveTaskToBack(SharedActivity.getTaskId,TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
end; //方法二:显示程序
procedure No2SendAppToFront;
begin
SharedActivityManager.moveTaskToFront(SharedActivity.getTaskId,TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
end; //隐藏程序并在5秒后再显示
procedure TForm1.Button1Click(Sender: TObject);
begin
//隐藏程序
No1SendAppToBack;
//打开定时器,显示程序(5秒后显示)
Timer1.Enabled := True;
end; procedure TForm1.Button2Click(Sender: TObject);
begin
//隐藏程序
No2SendAppToBack;
end; procedure TForm1.Button3Click(Sender: TObject);
begin
//显示程序
No2SendAppToFront;
end; procedure TForm1.Timer1Timer(Sender: TObject);
begin
//显示程序
No2SendAppToFront;
Timer1.Enabled := False;
end; end.