1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. The_Unknown, 07.10.2011 #1
    The_Unknown

    The_Unknown Threadstarter Neuer Benutzer

    Hallo,

    ich sende mit der Bibliothek kSOAP einen SOAP-Request über HTTP an einen Webservice, den ich programmiert habe.

    Der Aufruf erfolgt so:

    Code:
    SoapObject soapRequest = new SoapObject(serviceNamespace, methodGetX);
            soapRequest.addProperty("arg0", result);
    
            SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            soapEnvelope.setOutputSoapObject(soapRequest);
    
            HttpTransportSE httpTransport = new HttpTransportSE(location, 30000); // longer timeout is necessary
    
            try {
                httpTransport.call(soapAction, soapEnvelope);
    
                Object soapResponse = soapEnvelope.getResponse();
                return soapResponse.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
    
    In der 1. Zeile des try-Blocks blockiert die App dann, bis eine Antwort vom Server angekommen ist.

    Gibt es eine Möglichkeit, dass ich trotzdem noch in der App herumklicken kann und sie nicht völlig blockiert? Sowas ist immer relativ hässlich :)

    Danke im Voraus!

    Ciao The_Unknown
     
  2. Neeldarax, 07.10.2011 #2
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Hi The_Unknown,

    ich hab das selbe Problem wie du gehabt.
    Leider kann ich dir nicht sagen, wieso Android bis zu zwei Sekunden(so lange) für den Aufruf eines WebServices braucht.

    Aber wenn du mit Threads und eine Art Wartebalken arbeitest, dann wird die GUI nicht blockiert. Wenn dann der Aufruf fertig ist, kannst du ihn mit Callback und/oder mit Handler in GUI-Thread wieder navigieren.

    Generell gilt, im GUI-Thread keine Berechnungen oder lange aufrufe, genau wie dein Beispiel, durchführen.

    HIER der Punkt zu Responsiveness von der Developer-Seite android.com.

    regards
     
  3. MichaelS, 09.10.2011 #3
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Es gibt nur einen UI Thread der für die Oberfläche von deiner App verantwortlich ist, wenn du nun aufwendige Sachen in diesem Thread ausführst, bzw. auf eine Antwort wartest ausm inet, hängt der Thread :)

    Du musst also alles aufwändige bzw. alles, was dein UI Thread zum warten bewegt, in ein eigenen Thread auslagern. Du musst natürlich darauf achten, dass du keine Zeitlichen Probleme bekommst... zum Beispiel, wenn du mit mehreren Threads auf Daten zugreifst und ein Thread schneller als der andere ist und sie gegebenfalls gleichzeitig auf Daten zugreifen wollen.

    Sprich also nicht unkontrolliert Threads starten :)

    Gruß
    Michael S
     
  4. Maddi, 10.10.2011 #4
    Maddi

    Maddi Android-Hilfe.de Mitglied

    Am besten solltest du dir mal AsyncTask | Android Developers
    durchlesen.
    Da wird genau erklärt wie man das am besten machen sollte.
    Solltest du Vorhaben, eine App für android 3.0+ zu entwickeln, wird du es dir zwangsweise aneignen müssen, da eine NetworkOnMainThreadException geworfen wird sobald du im Main Thread Netzwerkaktionen Versuchst.

    NetworkOnMainThreadException | Android Developers

    mfg
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Integer-Wert übertragen auf zweite Activity Android App Entwicklung Freitag um 15:59 Uhr
call function and return result Android App Entwicklung 14.11.2017
[ERLEDIGT] Bitmap von Activity an Activity übergben Android App Entwicklung 03.09.2017
[OFFEN] Activity als Dialog - RecyclerView funktioniert nicht mehr Android App Entwicklung 14.08.2017
[ERLEDIGT] Widget reagiert nicht auf Click mit anschliessendem Http-Request Android App Entwicklung 04.07.2017
[OFFEN] Problem mit meiner Login App Android App Entwicklung 10.06.2017
[GELÖST] Nach AS Update Fehler Error running app: Default Activity not found Android App Entwicklung 16.05.2017
[GELÖST] Übergabe an zweite Activity Android App Entwicklung 11.05.2017
[ERLEDIGT] Problem beim Starten einer neuen Activity Android App Entwicklung 21.03.2017
Intent mit Daten (putExtra) zu anderer Activity Android App Entwicklung 14.02.2017