Manitikyl Опубликовано 3 сентября, 2014 Поделиться Опубликовано 3 сентября, 2014 Как в FireMonkey Mobile отловить то, что форма находится в скрытом состоянии, ну т.е. пользователь свернул приложение? Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 3 сентября, 2014 Администраторы Поделиться Опубликовано 3 сентября, 2014 В XE6 появился специальный сервис для контролирования смены состояния приложения IFMXApplicationEventService. Он позволяет задать свой обработчик на событие смены состояния. Всего поддерживаются следующие типы состояний TApplicationEvent: FinishedLaunching - приложение запущено BecameActive - приложение стало активным, после того, как до этого было свернутым. WillBecomeInactive - приложение будет активировано EnteredBackground - приложение свернулось WillBecomeForeground - приложение будет свернуто WillTerminate - приложение будет завершено LowMemory - Нехватка памяти OpenURL - открытие приложение по ссылке. 1 Способ. Запрос сервиса IFMXApplicationEventService Соответственно, чтобы узнать о смене состояния нужно: Запросить сервис: uses FMX.Platform; var ApplicationService: IFMXApplicationEventService; begin TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, ApplicationService); Создать свой обработчик и задать его при помощи полученного сервиса: function TForm1.ApplicationEventChanged(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; begin // Здесь получаем новое состояние приложения end; var ApplicationService: IFMXApplicationEventService; begin TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, ApplicationService); if ApplicationService <> nil then ApplicationService.SetApplicationEventHandler(ApplicationEventChanged); end; 2 Способ. Подписка на получение сообщения: Вместе со сменой состояния платформа FMX осуществляет широковещательную рассылку сообщения о смене состояния: TApplicationEventMessage Второй способ заключается в подписке на это сообщение: Подписываемся на получение сообщения TApplicationEventMessage: uses System.Messaging; // Подписка TMessageManager.DefaultManager.SubscribeToMessage(TApplicationEventMessage, DoApplicationEventChanged); Получаем сообщения procedure DoApplicationEventChanged(const Sender: TObject; const Message: TMessage); begin end; Не забываем отписаться от сообщений, когда это больше уже не нужно: // Отписка TMessageManager.DefaultManager.Unsubscribe(TApplicationEventMessage, DoApplicationEventChanged); Andrey Efimov, Manitikyl и AngryOwl 3 Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 3 сентября, 2014 Модераторы Поделиться Опубликовано 3 сентября, 2014 Вообще не рассчитывайте так на фоновую работу приложения без Сервиса. Андроид может завершить ваше приложение в любой момент, система сама решает можно ли оставить приложение в фоне или лучше освободить оперативу. По вашему вопросу: Первое что приходит в голову – это отлавливать события, которые происходят при работе с приложением. В блоге, я дал вам ссылку на статью Жизненный цикл мобильного приложения. Ярослав уже привёл пример такой ловли событий. AngryOwl и Brovin Yaroslav 2 Ссылка на комментарий
Вопрос
Manitikyl
Как в FireMonkey Mobile отловить то, что форма находится в скрытом состоянии, ну т.е. пользователь свернул приложение?
Ссылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения