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系统下, 如何确定一个切换到后台的应用是被系统杀死的