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.
时间: 10-08

Android实例-程序切换到后台及从后台切换到前台的相关文章

Android实例-多窗口的切换

Android实例-多窗口的切换 1.图片一是程序运行后的界面. 2.图片二是点击"非模态显示"的界面. 3.图片三是点击"模诚显示"的界面(提示平台不支持). unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphic

Android L Camera2 API 使用实例程序汇总

在网上发现几个使用Camera API2开发的实例程序,总结一下方便后续参考: 1.Camera2 Basic : https://github.com/googlesamples/android-Camera2Basic This sample demonstrates how to use basic functionalities of Camera2 API. You can learn how to iterate through characteristics of all the

Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析

在前两文中,我们分析了Activity组件的窗口对象和视图对象的创建过程.Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求WindowManagerService为其增加一个WindowState对象,用来描述它的窗口状态.在本文中,我们就详细分析Activity组件与WindowManagerService的连接过程. 我们从两方面来看Activity组件与WindowManagerService服务之间的连接.一方

用 Eclipse 开发 Android 应用程序

转自:http://www.apkbus.com/android-13828-1-1.html 开始之前 本教程介绍如何在 Eclipse 环境中进行 Android 应用程序开发,包括两个示例应用程序.第一个示例是一个基本的应用程序,涉及构建和调试的所有阶段.第二个应用程序示例涉及比较复杂的 Android 特性,包括联系人搜索和 Google Maps 地址查找.要想从本教程获得最大收益,具备移动开发经验会有帮助,但不是必需的.开发 Android 应用程序需要 Java? 编程技能,但是对

Android应用程序安装与Launcher启动机制

以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luoshengyang/article/details/8923485http://blog.csdn.net/luoshengyang/article/details/12957169 整理by Doing Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,

【苦读官方文档】2.Android应用程序基本原理概述

官方文档原文地址 应用程序原理 Android应用程序是通过Java编程语言来写.Android软件开发工具把你的代码和其它数据.资源文件一起编译.打包成一个APK文件,这个文档以.apk为后缀,保存了一个Android应用程序全部的内容.Android设备通过它来安装相应的应用. 一旦安装到设备上.每一个Android应用程序就执行在各自独立的安全沙盒中: Android系统是一个多用户的Linux系统.每一个应用都是一个用户. Android系统默认会给每一个应用分配一个唯一的用户ID(这个

Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析

http://blog.csdn.net/luoshengyang/article/details/8223770 在前文中,我们分析了Android应用程序窗口的运行上下文环境的创建过程.由此可知,每一个Activity组件都有一个关联的ContextImpl对象,同时,它还关联有一个Window对象,用来描述一个具体的应用程序窗口.由此又可知,Activity只不过是一个高度抽象的UI组件,它的具体UI实现其实是由其它的一系列对象来实现的.在本文中,我们就将详细分析Android应用程序窗口

单例访问Android应用程序对象

1.单例模式: 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 2.单例模式优势: 由于单例模式在内存中只有一个实例,减少了内存开销 单例模式可以避免对资源的多重占用. 单例模式可以在系统设置全局的访问点,优化和共享资源访问. 2.问题:需要从android应用程序中去访问全局数据 解决

Android应用程序窗口(Activity)的视图对象(View)的创建过程分析

从前文可知道,每一个Activity组件都有一个关联的Window对象,用来描述一个应用程序窗口.每一个应用程序窗口内部又包含有一个View对象,用来描述应用程序窗口的视图.应用程序窗口视图是真正用来实现UI内容和布局的,也就是说,每一个Activity组件的UI内容和布局都是通过与其所关联的一个Window对象的内部的一个View对象来实现的.在本文中,我们就详细分析应用程序窗口视图的创建过程. 在前面Android应用程序窗口(Activity)实现框架简要介绍和学习计划一文中提到,应用程序