1. Сообщать не чаще раз в 24 часа
2. При сообщении записывать id маячка в базу с датой и временем push
3. При срабатывании вхождения в зону маячка, сверять с БД, когда был прежний вывод push, если не было - шлем push, если был и прошло более 24 часов, шлем опять!
Как то так... Хранить БД локально, если пользователь сменил телефон за эти 24 часа или переставит систему, ну что же, логично, что придёт push!
Посмотрите через штатный Монитор ресурсов Windows работу с диском во время тормозов. У меня была подобная проблема на XE8 - оказалось что конфликтует с КриптоПРО, дергает какую то dll и любое действие растягивается на сорок минут. С техподдержкой эмбаркадеры неделю потратили на выяснение. Начали с запуска "bds.exe -rtest", закончили запуском специального приложения для подробного мониторинга IDE.
Если в гриде планируется выводить только текстовую информацию то используйте TStringGrid. Для отображения текста в ячейке в несколько строк используйте в тексте символ абзаца. Пример:
StrinGrid1.Cells[1, 1] := 'строка 1 в ячейке 1.1' + #13#10 + 'строка 2 в ячейке 1.1';
Если же надо чтоб текст в одной ячейке был отображен разным шрифтом/цветом используйте событие TGrid.OnDrawColumnCell. Ниже описано как работать с TextLayout в этом событии:
Добавлю, что в одной ячейке можно рисовать несколько TextLayout указывая для каждого цвет и размер шрифта, например как TStringGrid на скриншоте:
P.S. Если планируете писать мобильное приложение, используйте TListView вместо грида.
Ссылка: http://delphifmandroid.blogspot.ru/2016/05/rad-studio-101-berlin-fireui-live.html
Автор: Андрей Ефимов
Описание: В этот раз, речь пойдёт о новом инструменте FireUI Live Preview, добавленном в RAD Studio 10.1 Berlin . Забегая вперёд скажу, что инструмент очень полезный и удобный, есть исходники и разработан с использованием App Tethering.
Статья: http://community.embarcadero.com/blogs/entry/timagelist101ru-1
Автор: Сергей Рощин
Обзор новых возможностей, которые появились в компоненте и редакторе TImageList для Delphi R101 (2016 год, Version 24)