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.
时间: 2024-11-11 05:37:13

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

使用WakeLock使Android应用程序保持后台唤醒

使用WakeLock使Android应用程序保持后台唤醒 - Ryan's zone - 博客频道 - CSDN.NET 在使用一些产品列如微信.QQ之类的,如果有新消息来时,手机屏幕即使在锁屏状态下也会亮起并提示声音,这时用户就知道有新消息来临了.但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入休眠状态,这时,Android系统中CPU会保持在一个相对较低的功耗状态.针对前面的例子,收到新消息必定有网络请求,而网络请求是消耗CPU的操作,那么如

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应用程序组件Content Provider应用实例

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6950440 文简要介绍了Android应用程序组件Content Provider在应用程序间共享数据的原理,但是没有进一步研究它的实现.本文将实现两个应用程序,其中一个以Content Provider的形式来提供数据访问入口,另一个通过这个Content Provider来访问这些数据.本文的例子不仅可以为下文分析Content Provi

Android实例剖析笔记(三)

摘要:点介绍Activity的生命周期,通过一个简单的实验来摸索状态转换的机制 Activity的生命周期 Activity类中有许多onXXX形式的函数可以重载,比如onCreate,onStart,onStop,onPause,那么它们的调用顺序到底是如何的呢?下面就通过一个实验来进行分析.在做这个实验之前,我们先得知道如何在Android中进行Log输出的.我们要使用的是android.util.log类,这个类相当的简单易用,因为它提供的全是一些静态方法: Log.v(String ta

在Android应用程序中实现推送通知

几乎每一个应用程序的一个重要特性是支持推送通知的能力.使用推送通知,您可以更新用户,而不需要应用程序在任何时候运行或轮询服务器, 避免潜在的电池电量不足. 随着火力点云信息的介绍(FCM),谷歌使得在Android应用程序中实现推送通知变得容易了一点.FCM是谷歌云消息(GCM)的新版本和改进版本,您可以使用它将远程通知发送到客户机应用程序.对于将瞄准多个平台或需要利用先进的推操作(如分段推送)的应用程序,我们可以使用带有Azure通知集线器的FCM. 与GCM不同,FCM负责为您提供基本的消息

Android应用程序内存泄漏介绍

Android应用程序内存泄漏介绍 内存泄漏和内存溢出的区别 内存溢出(out of memory)是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory.比如在我们每个Android程序在运行时系统都会给程序分配一个一定的内存空间,当程序在运行中需要的内存超出这个限制就会报内存溢出(out of memory). 内存泄漏(memory leak)是指程序在申请内存后,无法释放已申请的内存空间.多次内存无法被释放,程序占用的内存会一直增加,直到超过系统的内存限制报内存

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? 编程技能,但是对