AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IdHTTP in Android Release Modus

Ein Thema von mtle · begonnen am 18. Jun 2021 · letzter Beitrag vom 21. Jul 2021
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.074 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: IdHTTP in Android Release Modus

  Alt 16. Jul 2021, 11:34
Delphi-Quellcode:
procedure TFMain.FormCreate(Sender: TObject);
var
  mstream: TMemoryStream;

  function DownloadFile(const aURL: string; aStream: TStream): boolean;
  // THTTPClient benötigt im Gegensatz zu TidHTTP beim Download von htpps:// KEINE SSL Dateien!
  var
    vHTTP: THTTPClient;
    vResponse: IHTTPResponse;
  begin
    Result := False;
    Assert(aStream <> nil);
    vHTTP := THTTPClient.Create;
    try
      vHTTP.CustomHeaders['Pragma'] := 'no-cache';
      vResponse := vHTTP.Get(aURL, aStream);
      if Assigned(vResponse) then
      begin
        Result := vResponse.StatusCode = 200;
      end else
      begin
          // kluge Log-Möglichkeit, damit man mitbekommt, das keine Instanz von IHTTPResponse zurückkommt
      end;
    finally
      vHTTP.Free
    end;
  end;

begin
  mstream := TMemoryStream.Create;
  try
    try
      DownloadFile('https://www.[]', mstream);
      Memo1.Lines.LoadFromStream(mstream);
    except
      // [kein Internet, lokal gespeicherten Dateiinhalt/Backup verarbeiten]
    end;
  finally
    mstream.Free;
  end;
end;
Wie ist es denn so?
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.174 Beiträge
 
Delphi 12 Athens
 
#2

AW: IdHTTP in Android Release Modus

  Alt 16. Jul 2021, 12:46
Ich sehe da zwei Probleme.

1. Der Request ist blocking
http://docwiki.embarcadero.com/RADSt...g_its_Response
Deshalb sollte man das besser asynchron in einem Thread aufrufen.

2. In FormCreate sollte man unter Mobile nichts machen.
Besser auf FormShow warten, und da dann irgendwelche längerdauernden Tasks machen.

Wird Android blockiert, insbesondere beim Startup, ist das meistens eine Garantie dass dich das OS killt.
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#3

AW: IdHTTP in Android Release Modus

  Alt 16. Jul 2021, 14:12
Die erweiterte DownloadFile Function von TiGü und das Verschieben in OnShow hat leider nichts gebracht.

Mit Threads komme ich alleine nicht klar. Kann mir da bitte jemand mit einem Stück Code helfen?
Steffen
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.651 Beiträge
 
Delphi 12 Athens
 
#4

AW: IdHTTP in Android Release Modus

  Alt 16. Jul 2021, 15:09

.....

2. In FormCreate sollte man unter Mobile nichts machen.
Besser auf FormShow warten, und da dann irgendwelche längerdauernden Tasks machen.
Ist das wirklich so? Sollte man OnCreate bei Mobile vergessen?
Ich hole mir da meine Ini rein, initialisiere TTS, holen mit die Versionen etc.
Sollte ich das wirklich alles erst im Formshow machen?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.174 Beiträge
 
Delphi 12 Athens
 
#5

AW: IdHTTP in Android Release Modus

  Alt 16. Jul 2021, 16:39
Ja, denn das System ist mit hochfahren beschäftigt.
Dauert da etwas zu lange wird man rausgeworfen.
Phones akzeptieren keine Geisterzustände.
Wenn der ViewController dann sichtbar ist, dann ist die App im Foreground, da kann der User machen was er will.
Aber längere Zeit blockieren geht auch da in die Hose, z.b. wenn ein Anruft kommt, dann fliegt die App wieder raus.

Du hast natürlich etwas Zeit, wenn es nicht lange blockiert Ok,
Aber eine hhtp Abfrage fällt da nicht drunter.
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#6

AW: IdHTTP in Android Release Modus

  Alt 21. Jul 2021, 06:33
Der Fehler wurde an einer anderen Stelle verursacht. Ein thread ist für das GET nicht unbedingt erforderlich
Steffen
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.174 Beiträge
 
Delphi 12 Athens
 
#7

AW: IdHTTP in Android Release Modus

  Alt 21. Jul 2021, 09:33
Dann würde ich trotzdem mal probieren was unter Android passiert wenn Du das machst
Delphi-Quellcode:
  ...
  vResponse := vHTTP.Get(aURL, aStream);
  Sleep( 60000 );
  ...
Wie lange lässt sich das dein Phone gefallen ?
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz