-
Постов
1 204 -
Зарегистрирован
-
Посещение
-
Победитель дней
26
Активность репутации
-
Rusland отреагировална Brovin Yaroslav в [TMapView] Удаление маркеров TMapView
Добрый день,
При добавлении маркера, методы возвращаюют вам инстанс маркера.
/// <summary>Add marker specified by Descriptor and return new TMapMarker object</summary> function AddMarker(const Descriptor: TMapMarkerDescriptor): TMapMarker; /// <summary>Add circle specified by Descriptor and return new TMapCircle object</summary> function AddCircle(const Descriptor: TMapCircleDescriptor): TMapCircle; /// <summary>Add polygon specified by Descriptor and return new TMapPolygon object</summary> function AddPolygon(const Descriptor: TMapPolygonDescriptor): TMapPolygon; /// <summary>Add polyline specified by Descriptor and return new TMapPolyline object</summary> function AddPolyline(const Descriptor: TMapPolylineDescriptor): TMapPolyline; Сохраните его. И когда нужно будет его удалить, выполните:
Marker.Remove; Marker.Free; Или
Marker.DisposeOf; -
Rusland отреагировална Brovin Yaroslav в [Android] программа закрывается при использовании LocationSensor и Memo
Событие приходит в другом потоке. А с UI можно работать только в главном потоке. Поэтому перед тем, как что-то записывать в мемо, эту запись нужно завернуть в TThread.Synchronize.
procedure TForm17.LocationSensor1LocationChanged(Sender: TObject; const [Ref] OldLocation, NewLocation: TLocationCoord2D); begin TThread.Synchronize(procedure begin Memo1.Lines.Add(''); end); end; -
Rusland отреагировална Равиль Зарипов (ZuBy) в [Android] программа закрывается при использовании LocationSensor и Memo
TThread.Synchronize(nil, procedure begin Memo1.Lines.Add(''); end); потому что работает в другом потоке!
-
Rusland отреагировална Brovin Yaroslav в [Android] программа закрывается при использовании LocationSensor и Memo
То что вы не создаете, это не означает, что ваша программа использует всего один поток. Этот сенсор на андроиде работает в другом потоке. Вам нужно понимать только одно, что работать с UI контролами можно только в UI потоке. На счет TLabel - вам просто повезло. Это простой контрол. А вот с TMemo, как вы поняли, такое везение не проходит. Так как TMemo вычисляет размеры линий. И если вы в момент вычисления линий, добавляете или удаляете линию, то можно спокойно поймать EArgumentOfRange исключение -
Rusland отреагировална haword в TLocationSensor
ну вот, прыгая с бубном вокруг программы и напевая хэя хэя хэя достучался то решения проблемы. вернее даже не решения а костыля для моих нужд.
Нафига так делать не понятно но программисты обезьяны сделали. При активации любого сенсора, в менеджере сенсоров происходит активация и создание классов для ВСЕХ имеющихся сенсоров. И некоторые сенсоры уводят процессор в 100%.
так вот на моем телефоне + эмуляторе достаточно отключить создание сенсоров
TAndroidNativeLightSensor
TAndroidNativeMagneticSensor
TAndroidNativeProximitySensor
в процедуре Activate класса TAndroidSensorManager в файле System.Android.Sensors.pas и закинуть к себе в проект и вуаля, нагрузки на процессоре нет.