如何在iOS和Android上获得应用恢复状态?

时间:2016-07-13 12:51:15

标签: android ios delphi delphi-xe8

iOS Android 上恢复应用时,是否可以从代码的角度检查某些内容?

e.g。当应用程序最小化并恢复时(应用程序仍在设备后台运行)。

2 个答案:

答案 0 :(得分:4)

您需要使用IFMXApplicationEventService注册将通知应用程序的回调:

uses FMX.Types, FMX.Platform;

function TForm1.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean;
begin
  case AAppEvent of
    TApplicationEvent.FinishedLaunching:    Log.d('Launched.');
    TApplicationEvent.BecameActive:         Log.d('Gained focus.');
    TApplicationEvent.EnteredBackground:    Log.d('Now running in background.');
    TApplicationEvent.WillBecomeForeground: Log.d('Restoring from background.');
    TApplicationEvent.WillBecomeInactive:   Log.d('Going to lose focus.');
    TApplicationEvent.WillTerminate:        Log.d('Quitting the application.');
    TApplicationEvent.LowMemory:            Log.d('Device running out of memory.');

    // iOS only
    TApplicationEvent.TimeChange:           Log.d('Significant change in time.');
    TApplicationEvent.OpenURL:              Log.d('Request to open an URL.');
  end;

  Result := True;
end;

procedure TForm11.FormCreate(Sender: TObject);
var
  aFMXApplicationEventService: IFMXApplicationEventService;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService,
    IInterface(aFMXApplicationEventService))
  then
    aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent)
  else
    Log.d('Application Event Service not supported.');
end;

有关事件类型here的更多信息。

对于PawełGłowacki(对于Delphi XE5,但仍然有用)的主题good article

答案 1 :(得分:2)

在iOS中您可以在

中添加标记
applicationDidEnterBackground
在appDelegate中

以了解用户是否输入了背景,

applicationDidBecomeActive

知道用户从后台返回应用