[FMX]将 Android 程序切换到后台及从后台切换到前台实现

花门楼前见秋草,岂能贫贱相看老。这篇文章主要讲述[FMX]将 Android 程序切换到后台及从后台切换到前台实现相关的知识,希望能为你提供帮助。
【[FMX]将 Android 程序切换到后台及从后台切换到前台实现】有时候,我们需要将自己的android程序切换到后台运行,在必要时,将其切换到前台运行。下面提供了一种实现方式,首先需要引用三个单元:
 

1 uses Androidapi.JNI.App,Androidapi.JNI.GraphicsContentViewText,Androidapi.Helpers;
将应用程序切换到后台,这里提供了两种方法,一种是将应用切换回桌面来实现,执行后相当于按下 Home 键:
 
1 2 3 4 5 6 7 8 9 10 procedure SendAppToBack(Sender: TObject); var     intent:JIntent; begin intent:= TJIntent.Create; intent.setAction(TJIntent.javaClass.ACTION_MAIN); intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); intent.addCategory(TJIntent.JavaClass.CATEGORY_HOME); SharedActivityContext.startActivity(intent); end;
另一种办法是调用  JActivityManager.moveTaskToBack 函数,这种相当于按下返回键,但程序没有退出。我们先需要实现一个 ActivityManager 的服务实例,XE7 没有提供默认函数,咱们模仿写一个,这个函数在后面将程序切换到前台时一样需要用到:
 
1 2 3 4 5 6 7 function SharedActivityManager: JActivityManager; var     AService: JObject; begin AService := SharedActivityContext.getSystemService(TJContext.JavaClass.ACTIVITY_SERVICE); Result := TJActivityManager.Wrap((AService as ILocalObject).GetObjectID); end;
现在切换到后台,只需要一句代码:
 
1 2 3 4 procedure SendAppToBack; begin SharedActivityManager.moveTaskToBack(SharedActivity.getTaskId,TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); end;
反过来,切换到前台也只需要一句代码:
          Delphi/Pascal 
1 2 3 4 procedure BringAppToFront; begin SharedActivityManager.moveTaskToFront(SharedActivity.getTaskId,TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); end;
使用 moveTaskToBack/moveTaskToFront 需要注意,应用程序需要 reorder tasks 的授权(自己到项目设置里勾选上就OK了)。

    推荐阅读