Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Auslesen einer Webseite beschleunigen

Das Thema "Auslesen einer Webseite beschleunigen" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 22.09.2011, 15:08   #1 (permalink)
Fortgeschrittenes Mitglied

Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
Standard Auslesen einer Webseite beschleunigen

Hallo zusammen,

ich hab einen standard-Block, den ich in meinen Apps nutze um etwas von einer Webseite auszulesen.
Der Code funktioniert an sich sehr gut, nur leider läuft das Auslesen meiner Meinung nach sehr langsam.

Ich hab nun ein bisschen rumgebastelt und nach Alternativen gesucht aber irgendwie war noch nichts dabei, was wirklich spürbar schneller geht.

Code:
    /**
     * Liefert die angegebene Webseite als String zurück.
     *
     * @return HTML der Webseite.
     */
    private String getSourceCode() {
        URL url = null;
        try {
            url = new URL(wantedURL);
        } catch (MalformedURLException e) {
            writeErrorLogOnSD(e);
            e.printStackTrace();
        }
        URLConnection conn = null;
        try {
            conn = url.openConnection();
        } catch (IOException e) {
            writeErrorLogOnSD(e);
            e.printStackTrace();
        } catch (NullPointerException e) {
            writeErrorLogOnSD(e);
            e.printStackTrace();
        }
        // editText.getText().toString()
        BufferedReader rd = null;
        try {
            rd = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
        } catch (IOException e) {
            writeErrorLogOnSD(e);
            e.printStackTrace();
        } catch (NullPointerException e) {
            writeErrorLogOnSD(e);
            e.printStackTrace();
        }

        String line = "";
        String oldLine = "";
        if (rd != null) {
            System.out.println("Got Line");
            try {
                while ((line = rd.readLine()) != null) {
                    oldLine = oldLine + line;
                }
            } catch (IOException e) {
                writeErrorLogOnSD(e);
                e.printStackTrace();
            }
            try {
                rd.close();
            } catch (IOException e) {
                writeErrorLogOnSD(e);
                e.printStackTrace();
            }
        } else {
            System.out.println("No Line");
            error = true;
        }

        return oldLine;
    }
Wäre cool, wenn ihr ein paar Geheim-Tipps in der Hinterhand habt, oder gibt es wirklich nichts, dass "deutlich" schneller ist?

Viele Grüße
Chris
ChrisMobile ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei ChrisMobile für diesen Beitrag:
fimamei (26.02.2012)
Alt 22.09.2011, 21:12   #2 (permalink)
Android Guru
 
Benutzerbild von Fr4gg0r

Modell: Samsung Galaxy S (I9000)

Registriert seit: 21.12.2009
Beiträge: 2.572
Abgegebene Danke: 76
Erhielt 506 Danke für 295 Beiträge
Standard AW: Auslesen einer Webseite beschleunigen

StringBuilder einsetzen (tut sonst der Compiler führ dich, aber ineffizient. Der erstellt dann nämlich im Schleifenrumpf jedes mal einen neuen).
Fr4gg0r ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei Fr4gg0r für diesen Beitrag:
fimamei (26.02.2012)
Alt 23.09.2011, 23:11   #3 (permalink)
Fortgeschrittenes Mitglied

Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
Standard AW: Auslesen einer Webseite beschleunigen

Danke für den Tipp, das Herunterladen der Daten geht nun im Schnitt 4x schneller!

Hab die beiden Funktionen gerade direkt verglichen und auf der selben Webseite dauert es mit dem Code ohne StringBuilder ca. 4000ms (mehrfach getestet) und mit dem StringBuilder nur noch ca. 1000ms (teilweise sogar nur 800ms).

Hier kommt nochmal der neue Code für die Nachwelt:
Code:
                /*
                while ((line = rd.readLine()) != null) {
                    oldLine = oldLine + line;
                }
                */
                StringBuilder sb = new StringBuilder();
                while ((line = rd.readLine()) != null) {
                    //oldLine = oldLine + line;
                    sb.append(line);
                }
                oldLine =  sb.toString();
Viele Grüße
Chris
ChrisMobile ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei ChrisMobile für diesen Beitrag:
fimamei (26.02.2012)
Alt 24.09.2011, 10:49   #4 (permalink)
Erfahrener Benutzer
 
Benutzerbild von funcoder

Modell: SGS2 + HTC Hero

Registriert seit: 15.08.2009
Beiträge: 225
Abgegebene Danke: 2
Erhielt 36 Danke für 29 Beiträge
funcoder eine Nachricht über ICQ schicken funcoder eine Nachricht über Skype™ schicken
Standard AW: Auslesen einer Webseite beschleunigen

Wem die Ursachen für das "Phänomen" interessieren, dem empfehle ich einen Blick auf diesem Blog-Artikel zu werfen.
Lohnt sich! Performance ist nun mal ein wichtiger Nennwert bei der User-Experience und entscheidet nicht selten ob eine Applikation beim Benutzer ankommt oder aber direkt deinstalliert wird.
__________________
funcoder ist offline   Mit Zitat antworten
Folgende Benutzer bedanken sich bei funcoder für diesen Beitrag:
ChrisMobile (24.09.2011), fimamei (26.02.2012), Tom299 (26.09.2011)
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Auslesen einer (eigenartigen) XML-Datei chemistry Android App Entwicklung 2 08.09.2011 15:19
Einträge in einer Webseite mit Tabellen (Joomla) teufelchen Android Allgemein 5 02.09.2011 19:58
Mache aus einer Webseite eine App Muecke1982 Android App Entwicklung 5 01.09.2011 18:59
Frage zum Dolphin Browsers HD (immer klassische Ansicht einer Webseite) Stefan3110 Sonstige Apps & Widgets 3 15.11.2010 16:51
Einzelne Elemente einer Webseite abgreifen isaak Android App Entwicklung 5 15.06.2010 23:57




Du liest gerade: "Auslesen einer Webseite beschleunigen" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.