首页 > 代码库 > Android实例-程序切换到后台及从后台切换到前台

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

技术分享

 

相关资料:

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

 

注意事项:

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

 

实例代码:

  1 unit Unit1;  2   3 interface  4   5 uses  6   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,  7   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,  8   FMX.Controls.Presentation, FMX.StdCtrls, FMX.ScrollBox, FMX.Memo;  9  10 type 11   TForm1 = class(TForm) 12     Timer1: TTimer; 13     Button1: TButton; 14     Label1: TLabel; 15     Button2: TButton; 16     Button3: TButton; 17     Memo1: TMemo; 18     procedure Button1Click(Sender: TObject); 19     procedure Button2Click(Sender: TObject); 20     procedure Button3Click(Sender: TObject); 21     procedure Timer1Timer(Sender: TObject); 22   private 23     { Private declarations } 24   public 25     { Public declarations } 26   end; 27  28 var 29   Form1: TForm1; 30  31 implementation 32 uses 33   Androidapi.JNI.App,//需要引入 34   Androidapi.JNI.GraphicsContentViewText,//需要引入 35   Androidapi.Helpers,//需要引入 36   Androidapi.JNI.JavaTypes,//需要引入 37   Androidapi.JNIBridge;//需要引入 38  39 //使用moveTaskToBack/moveTaskToFront需要应用程序有reorder tasks授权,如果没有权限,执行时程序会闪退。 40  41 {$R *.fmx} 42 //方法一:隐藏程序 43 procedure No1SendAppToBack; 44 var 45   intent:JIntent; 46 begin 47   intent:= TJIntent.Create; 48   intent.setAction(TJIntent.JavaClass.ACTION_MAIN); 49   intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); 50   intent.addCategory(TJIntent.JavaClass.CATEGORY_HOME); 51   SharedActivityContext.startActivity(intent); 52 end; 53  54 //方法二:获得活动管理器 55 function SharedActivityManager: JActivityManager; 56 var 57   AService: JObject; 58 begin 59   AService := SharedActivityContext.getSystemService(TJContext.JavaClass.ACTIVITY_SERVICE); 60   Result := TJActivityManager.Wrap((AService as ILocalObject).GetObjectID); 61 end; 62  63 //方法二:隐藏程序 64 procedure No2SendAppToBack; 65 begin 66   //网上说XE7是支持的,但是我用XE8不知道为什么不行。 67 //  SharedActivityManager.moveTaskToBack(SharedActivity.getTaskId,TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); 68 end; 69  70 //方法二:显示程序 71 procedure No2SendAppToFront; 72 begin 73   SharedActivityManager.moveTaskToFront(SharedActivity.getTaskId,TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); 74 end; 75  76 //隐藏程序并在5秒后再显示 77 procedure TForm1.Button1Click(Sender: TObject); 78 begin 79   //隐藏程序 80   No1SendAppToBack; 81   //打开定时器,显示程序(5秒后显示) 82   Timer1.Enabled := True; 83 end; 84  85 procedure TForm1.Button2Click(Sender: TObject); 86 begin 87   //隐藏程序 88   No2SendAppToBack; 89 end; 90  91 procedure TForm1.Button3Click(Sender: TObject); 92 begin 93   //显示程序 94   No2SendAppToFront; 95 end; 96  97 procedure TForm1.Timer1Timer(Sender: TObject); 98 begin 99   //显示程序100   No2SendAppToFront;101   Timer1.Enabled := False;102 end;103 104 end.

 

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