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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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实例-程序切换到后台及从后台切换到前台的主要内容,如果未能解决你的问题,请参考以下文章

android 切换到后台还运行吗

当应用程序切换到后台时,我的 android 位置服务被终止

android系统下, 如何确定一个切换到后台的应用是被系统杀死的

如何在Android中保持kivy服务在后台运行(切换到其他应用程序或锁定屏幕时服务仍然运行)?

Android 监听APP进入后台或切换到前台方案对比

Android判断应用在前台还是后台运行(判断应用前后台切换)