| |||||||
Das Thema "Auslesen einer Webseite beschleunigen" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
| 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;
} Viele Grüße Chris |
| | |
| Folgender Benutzer bedankt sich bei ChrisMobile für diesen Beitrag: | fimamei (26.02.2012) |
| | #2 (permalink) |
| Android Guru 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
|
StringBuilder einsetzen (tut sonst der Compiler führ dich, aber ineffizient. Der erstellt dann nämlich im Schleifenrumpf jedes mal einen neuen).
__________________ Meine Apps: GTalk Widget free Filehosting mit direkt download links & ohne werbung |
| | |
| Folgender Benutzer bedankt sich bei Fr4gg0r für diesen Beitrag: | fimamei (26.02.2012) |
| | #3 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 17.03.2010
Beiträge: 353
Abgegebene Danke: 41
Erhielt 52 Danke für 37 Beiträge
|
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(); Chris |
| | |
| Folgender Benutzer bedankt sich bei ChrisMobile für diesen Beitrag: | fimamei (26.02.2012) |
| | #4 (permalink) |
| Erfahrener Benutzer |
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.
__________________ |
| | |
| Folgende Benutzer bedanken sich bei funcoder für diesen Beitrag: |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| 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 |