Перейти к содержанию
Fire Monkey от А до Я

Rusland

Пользователи
  • Постов

    1 204
  • Зарегистрирован

  • Посещение

  • Победитель дней

    26

Активность репутации

  1. Like
    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;
  2. Like
    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;
  3. Like
    Rusland отреагировална Равиль Зарипов (ZuBy) в [Android] программа закрывается при использовании LocationSensor и Memo   
    TThread.Synchronize(nil, procedure begin Memo1.Lines.Add(''); end); потому что работает в другом потоке!
  4. Like
    Rusland отреагировална Brovin Yaroslav в [Android] программа закрывается при использовании LocationSensor и Memo   
    То что вы не создаете, это не означает, что ваша программа использует всего один поток. Этот сенсор на андроиде работает в другом потоке. Вам нужно понимать только одно, что работать с UI контролами можно только в UI потоке.  На счет TLabel - вам просто повезло. Это простой контрол. А вот с TMemo, как вы поняли, такое везение не проходит. Так как TMemo вычисляет размеры линий. И если вы в момент вычисления линий, добавляете или удаляете линию, то можно спокойно поймать EArgumentOfRange исключение
  5. Like
    Rusland отреагировална haword в TLocationSensor   
    ну вот, прыгая с бубном вокруг программы и напевая хэя хэя хэя достучался то решения проблемы. вернее даже не решения а костыля для моих нужд. 
     
    Нафига так делать не понятно но программисты обезьяны сделали. При активации любого сенсора, в менеджере сенсоров происходит активация и создание классов для ВСЕХ имеющихся сенсоров. И некоторые сенсоры уводят процессор в 100%. 
     
    так вот на моем телефоне + эмуляторе достаточно отключить создание сенсоров 
     
    TAndroidNativeLightSensor
    TAndroidNativeMagneticSensor
    TAndroidNativeProximitySensor
     
    в процедуре Activate класса TAndroidSensorManager в файле System.Android.Sensors.pas и закинуть к себе в проект и вуаля, нагрузки на процессоре нет. 
×
×
  • Создать...