Добрый день.
Andrey Yefimov в своем блоге подробно описал получение событий жизненного цикла приложения, в том числе и потерю активности. http://delphifmandroid.blogspot.com/2013/10/blog-post.html
function TForm1.HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean;
begin
case AAppEvent of
TApplicationEvent.BecameActive: Log('Became Active');
TApplicationEvent.EnteredBackground: Log('Entered Background');
TApplicationEvent.WillBecomeForeground: Log('Will Become Foreground');
end;
Result := True;
end;
procedure TForm1.FormCreate(Sender: TObject);
var aFMXApplicationEventService: iFMXApplicationEventService;
begin
............
if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService)) then aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent);
............
end;
Да с GetCachePath работает без нареканий.
Могу обмануть, но этот механизм используется только для анройда 5 версии. Это способ исправления бага при котором приложения на XE7 висли при попытке вывода картинки из TStream. А здесь сначала записывается в файл, а потом считывается уже в контрол. А то что вы показали, это элемент стиля.
Чтобы закрыть форму с выгрузкой ее из памяти, нужно сделать следующее:
Повесить обработчик на событие формы TForm.OnClose.
Установить переданные параметр Action в TCloseAction.caFree
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := TCloseAction.caFree;
end;
Doc Wiki: Releasing Forms in iOS Apps