如何将我的应用程序保留在前台?

时间:2015-03-03 14:49:47

标签: android delphi firemonkey delphi-xe7

问题:如何让我的应用程序保持在前台和/或阻止它进入后台?

我创建了一个应用程序并设法让它在设备启动时自动启动。该应用程序的目的是显示一些数据,永远不会去菜单或终止,除非我也想要它。

每隔一段时间,ActivityManager就会决定我的应用程序不够重要,并希望将其发送到后台,甚至更糟糕的是,完全杀死它。有时它会在1小时,4小时或16小时后发生。

到目前为止我已经找到了如何检查应用是否收到各种ApplicationEvents:

function TForm1.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean;
begin
  case AAppEvent of
    TApplicationEvent.FinishedLaunching: MemoPrint('Finished Launching');
    TApplicationEvent.BecameActive: MemoPrint('Became Active');
    TApplicationEvent.WillBecomeInactive: MemoPrint('Will Become Inactive');
    TApplicationEvent.EnteredBackground: MemoPrint('Entered Background');
    TApplicationEvent.WillBecomeForeground: MemoPrint('Will Become Foreground');
    TApplicationEvent.WillTerminate: MemoPrint('Will Terminate');
    TApplicationEvent.LowMemory: MemoPrint('Low Memory');
  end;
  Result := True;
end;

procedure TForm1.LinkAppEvent;
var
  aFMXApplicationEventService: IFMXApplicationEventService;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService,
    IInterface(aFMXApplicationEventService)) then
    aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent)
  else
    MemoPrint('Application Event Service is not supported.');
end;

所以我想知道如何从这里开始。希望到目前为止我在正确的轨道上。 :)

1 个答案:

答案 0 :(得分:3)

我认为你不能把它放在前台。如果您想重复执行某项任务,即使应用程序未被使用,您也可以使用即时在后台运行的服务。

您可以在后台运行服务,当有新数据可用时,您可以向用户显示通知,当用户点击通知时,会显示所需的数据。像所有新闻和其他应用程序一样。

另外,您可以使用Handler以特定的时间间隔对服务器执行新数据。但即使在这种情况下,您也无法将应用程序带到前台,除非用户对您的应用程序执行某些操作。