• 0
notricky

[XE8] TNetHttpRequest.OnRecieveData в деплое для android вешает приложение

Вопросы

Собственно поступаю я так - передаю по ссылке в процедуру reqReceiveData. 

procedure TFMain.reqReceiveData(const Sender: TObject; AContentLength, AReadCount: Int64; var Abort: Boolean);
begin
  if not PgbUpdate.Visible then
    PgbUpdate.Visible := true;
  PgbUpdate.Max := AContentLength;
  PgbUpdate.Value := AReadCount;
end;

Внутри процедуры соотв создается TNetHttpClient и TNetHttpRequest

В деплое для WIN32 - все работает, показывается прогресс-бар, все скачивается и тд. Однако в деплое для ANDROID при 

function TFMain.RunRequest(AUrl: String = ''; ARespStream: TBytesStream = nil; OnRcvData: TReceiveDataEvent = nil): TJSONObject;
begin
...
  c := TNetHTTPClient.Create(nil);
  r := TNetHTTPRequest.Create(nil);
...
  r.OnReceiveData := OnRcvData; //если закомментировать - все ок. Если нет - то на следующем шаге подвисон.
  resp := r.Get(url, ARespStream);
...
end;

зависает. Если закомментировать присвоение процедуры ресива, то все скачивается (только без прогресса). Процедура используется для всех версий: WIN, IOS, ANDROID,MACOS и работает исправно.

Кто что может сообщить по данному вопросу, вдруг кто сталкивался?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 ответа на этот вопрос

  • 0

Вы хотите сделать отображение прогресса при скачивании файлов?

Вместе со студией идёт демо-проекты, найти можно примерно по такому пути

C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\RTL

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От Pax Beach
      Коллеги, помогите пожалуйста с поиском решения.

      Есть зал 100x100 метров, 400-600 человек на борту. На их мобильные устройства (смартфоны, планшеты) нужно принимать раз в секунду различный текст ~120 символов в кодировке UTF8. Можно широковещательно, или P2P.
      Сейчас мы выбираем технологию передачи данных в ограниченном помещении большому количеству людей.
      От выбора инфраструктуры, понятно, зависит логика мобильных приложений для этой цели. 
       
      1. Как лучше выстроить инфраструктуру?
      2. Чем лучше рассылать Bluetooth или Wi-Fi (понятно, что GPRS канал в таком скоплении — не вариант, базовая станция не справятся, да и сигнала может не быть)?
      3. Сколько точек доступа и каких лучше разместить?
      4. На какие нюансы обратить внимание?
       
      Сначала я обратился к технологии маячков. Но по многим параметрам маячки здесь не подходят.
      Однако, не исключаю возможность широкого вещания по Bluetooth каналу.
      Так же возможно использовать технологию тетеринг (tethering), раздавать сигнал через смартфоны раскинутые по залу.
      Можно тоже самое организовать, раскидав точки доступа Wi-Fi.
      Преимущества той или иной инфраструктуры для меня не очевидны.
       
      Может кто-то сталкивался с подобными задачами?
      Заранее благодарю за участие в обсуждении.
       
       
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу